Mongodb Mongo$addToSet仍在插入,尽管数组中存在项

Mongodb Mongo$addToSet仍在插入,尽管数组中存在项,mongodb,mongoose,Mongodb,Mongoose,我正在尝试使用$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) { })

我正在尝试使用$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) { 

});
这将每次插入一条记录,即使地点和邮政编码完全匹配


谢谢

我认为你的结果不一样(它们可能看起来一样,但有看不见的字符)。例如:

db.a.insert({_id : 1, locs: []});
然后,无论向数组LOC添加多少次对象:

db.a.update({_id : 1},{$addToSet : {
   locs: {a : 1, b: 2}
}})
只会添加第一个


因此,看看您添加了什么,然后尝试进行原始mongo shell尝试。如果工作不正常,请将其张贴在此处。否则,请更准确地查看应用程序提供给mongo的数据。

感谢您的帮助 似乎我在使用Mongoose时添加了_id,我需要为数组创建一个子文档或新模式,并将_id设置为false

locations : [new mongoose.Schema(
    { 
        place : String,
        postcode : String
    },
    { _id: false})
]

现在一切正常了

您能在这里显示一些重复的结果吗?是的,您的示例工作正常,但我将它添加到我放置在数组“_id”:{“$oid”:“5428f2fe813693cc26803220”}中的每一项中,我假设数组包含一个对象“locations”:[{“地点”:“Llandudno”,“邮政编码”:“ll30”,“_id”:{“$oid”:“5428f2fe813693cc26803220”},]@RobPaddock很可能是猫鼬在添加这个$oid。不知道它为什么这么做(不熟悉猫鼬).只要找出删除它的方法。是的,我必须为它创建一个模式,并将_id设置为false。感谢您的帮助,尽管在终端中尝试它可以很容易地跟踪问题。