Mongodb Mongo$addToSet仍在插入,尽管数组中存在项
我正在尝试使用$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) { })
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。感谢您的帮助,尽管在终端中尝试它可以很容易地跟踪问题。