Mongodb 猫鼬:$addToSet不';不要检查重复项
你能看一下这个密码吗?我有复本 以下是模式:Mongodb 猫鼬:$addToSet不';不要检查重复项,mongodb,mongoose,duplicates,Mongodb,Mongoose,Duplicates,你能看一下这个密码吗?我有复本 以下是模式: var Account = new Schema({ username: String, votes:[ { resId: String, upvoted:[String]
var Account = new Schema({
username: String,
votes:[
{
resId: String,
upvoted:[String]
}
]
});
我正在尝试将项目添加到投票中
var id = 'a';
var resId = 'b';
users.update({'_id':id},
{
'$addToSet': {'votes': {'resId': resId}}
}
);
问题是,在两次更新后,当我只需要一次更新时,我会得到两次更新:
[
{
'username': 'Fat Gandalf',
'votes': [
{
'_id': objectID('11111111111111111111111'),
'resId': 'b',
'upvoted': []
}
]
},
{
'username': 'Fat Gandalf',
'votes': [
{
'_id': objectID('2222222222222222222222'),
'resId': 'b',
'upvoted': []
}
]
}
]
为什么$addToSet不在这里检查复制?有解决办法吗?尝试了$push,但也不起作用。非常感谢 添加了“_id:”false;到模式,现在它工作得很好!由于“res”和“upvoted”是两个值,“两者”构成一个“集合”,因此这两个值的任何变化都是一个新条目。此外,mongoose会自动添加
\u id
,除非您为数组内容指定单独的模式并使用{“\u id”:false}
选项。无论如何,您需要$push
,并且您需要测试“resId”值是否存在,即{“voates.resId”:{“$ne”:“b”},{“$push”:{“voates”:{“resId”:“b”,“upvoated”:[]}
。如果您仔细看,“upvoting”系统的示例很多。