Node.js 如果不存在,则创建文档,否则返回Null或空:MongoDB

Node.js 如果不存在,则创建文档,否则返回Null或空:MongoDB,node.js,mongodb,Node.js,Mongodb,我正在进行购物车项目,用户可以将项目标记为收藏夹。如果某个项目标记为收藏夹,它将保存在我的收藏夹中,但如果他/她已将该项目标记为收藏夹,我需要向移动端返回一些“此项目已标记为收藏夹”的响应。 在这里,我将展示我最喜爱的系列: [{ "_id" : "5e6b49162fa5f22c24be54ab", "alcoholId" : "5e68ce2c50c82e1abc842f03", "mixerId" : "5e68dc5b50c82e1abc860709", "ba

我正在进行购物车项目,用户可以将项目标记为收藏夹。如果某个项目标记为收藏夹,它将保存在我的收藏夹中,但如果他/她已将该项目标记为收藏夹,我需要向移动端返回一些“此项目已标记为收藏夹”的响应。 在这里,我将展示我最喜爱的系列:

 [{
   "_id" : "5e6b49162fa5f22c24be54ab",
   "alcoholId" : "5e68ce2c50c82e1abc842f03",
   "mixerId" : "5e68dc5b50c82e1abc860709",
   "barId" : "5e55f10d8b54541278e9cb07",
    "alcoholName" : "Crown Royal",
    "mixerName" : "Ginger beer",
    "modifierList" : [
      {
        "modifierId" : "5e68d38e50c82e1abc84e0e5",
        "_id" : "5e6b49162fa5f22c24be54ac",
        "modifierName" : "Single"
      },
      {
        "modifierId" : "5e68d38e50c82e1abc84e0e5",
        "_id" : "5e6b49162fa5f22c24be54ac",
        "modifierName" : "Single"
      }
   ],
   "customerId" : "5e60cc09387c6c139c458d6a",
   "__v" : 0
},
{
   "_id" : "5e6b49802fa5f22c24be54ad",
   "alcoholId" : "5e68ce3150c82e1abc842fc9",
   "mixerId" : "5e68dc6850c82e1abc8608be",
   "barId" : "5e55f0f28b54541278e9cb06",
   "alcoholName" : "Jameson Irish",
   "mixerName" : "Ginger ale",
    "modifierList" : [
      {
        "modifierId" : "5e68d39350c82e1abc84e1eb",
        "_id" : "5e6b49802fa5f22c24be54ae",
        "modifierName" : "Rocks"
      }
  ],
  "customerId" : "5e60cc09387c6c139c458d6a",
  "__v" : 0
}]

如果我再次尝试将下面的数据插入到我的收藏中

{
"alcoholId" : "5e68ce2c50c82e1abc842f03",
"mixerId" : "5e68dc5b50c82e1abc860709",
"barId" : "5e55f10d8b54541278e9cb07",
"alcoholName" : "Crown Royal",
"mixerName" : "Ginger beer",
"modifierList" : [
    {
        "modifierId" : "5e68d38e50c82e1abc84e0e5",
        "modifierName" : "Single"
    },
    {
        "modifierId" : "5e68d38e50c82e1abc84e0e5",
        "modifierName" : "Single"
    }
],
"customerId" : "5e60cc09387c6c139c458d6a",
"__v" : 0
}


应返回空或null。这意味着,如果其不存在于收藏中,请插入它,否则返回null/empty,这样我就可以识别我的集合中已经存在的这些。是否可以在单个查询中处理而不影响性能。

有任何帮助?????您是否尝试了唯一索引?没有…但我想在我的查询中检查这一点..如果您尝试在具有唯一索引的集合中插入第二个副本,响应将是一个“重复键”错误,您可以捕获/处理该错误,并且文档将不会被插入。那么您是说我应该为modifierId+mixerId+AlgorId+barId组合创建一个唯一索引?