Mongodb$addToSet副本
我正在用mongodb和node js构建一个应用程序。这是关于创建民意调查,我想在数据库中添加新选项,并增加每次提交的投票数。所有操作都很好,但在第一次搜索时,它会复制选项,而不仅仅是更新投票。以下是代码: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
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命令将按预期工作。该命令不起作用。以下是指向测试的链接