我正在尝试使用$ addToSet将新数组项插入到对象数组中,因为我不需要重复项
var location = {
place : req.body.location.Place,
postcode : req.body.location.Postcode
}
User.update({_id: req.body._id},
{$addToSet: { 'locations' : location}}, function(err, data) {
});
即使地点和邮政编码完全匹配,也会每次都插入一条记录。
由于
答案 0 :(得分:1)
我认为你的结果不一样(它们看起来可能相同,但却有不可见的字符)。例如:
db.a.insert({_id : 1, locs: []});
然后无论多少次将toToSet对象添加到数组locs:
db.a.update({_id : 1},{$addToSet : {
locs: {a : 1, b: 2}
}})
只会添加第一个。
所以看一下你在添加什么,然后尝试做一个原始的mongo shell尝试。如果它无法正常工作,请在此处发布。否则,请更准确地查看您的应用为mongo提供的数据。
答案 1 :(得分:1)
感谢您的帮助萨尔瓦多 看来我正在使用Mongoose它添加了_id,我需要为数组创建一个subDocument或新架构并将_id设置为false
locations : [new mongoose.Schema(
{
place : String,
postcode : String
},
{ _id: false})
]
现在一切正常