Mongodb$addToSet副本

Mongodb$addToSet副本,mongodb,mongoose,Mongodb,Mongoose,我正在用mongodb和node js构建一个应用程序。这是关于创建民意调查,我想在数据库中添加新选项,并增加每次提交的投票数。所有操作都很好,但在第一次搜索时,它会复制选项,而不仅仅是更新投票。以下是代码: let newChoice = function(option) { this.option = choice; this.votes = 0; }; let New = new newChoice(choice); poll.update({_id: id}, {$addT

我正在用mongodb和node js构建一个应用程序。这是关于创建民意调查,我想在数据库中添加新选项,并增加每次提交的投票数。所有操作都很好,但在第一次搜索时,它会复制选项,而不仅仅是更新投票。以下是代码:

let newChoice = function(option) { this.option = choice; this.votes = 0; };        let New = new newChoice(choice);
poll.update({_id: id}, {$addToSet: {"options": New, $exists: false}}, function(err, doc){
  if (err) {
    console.log(err);
  } 
  else {
      console.log(doc)
  }
}); 
poll.update({_id: id, "options.option": choice}, {$inc: {"options.$.votes": 1}}, function(err, vote) { if (err) { console.log( err); } });
    res.redirect("/show/"+id);
});
下面是我存储db选项的方式:

[ { "option": " pizza", "votes": 0 }, { "option": "burger ", "votes": 0 } 

知道如何防止重复吗?

如果您选择的选项和投票数=0不存在,您可以有条件地插入

db.coll.update(
    {_id: id, 'options.option': {$ne: my_choice}}, 
    {$push: {options: {'option': my_choice, 'votes': 0}}});

执行此操作后,用于增加计数的update命令将按预期工作。

该命令不起作用。以下是指向测试的链接