mongodb$addToSet_adding对象工作不正常



根据mongoDB关于$addToSet运算符的文档:

$addToSet仅确保没有重复项添加到设置,并且不影响现有的重复元素$addToSet不能保证修改集合中元素的特定顺序。

所以我的问题是:

我有一个数组字段,其中包含对象

foo = [ {a:1, b:2}, {a:3, b:2}]

因此,当我尝试在其中推送对象时,行为无法正常工作:

db.myCollection.updateOne({"some_id"}, {$addToSet:{foo:{a:1, b:2}}})

结果是:

foo = [ {a:1, b:2}, {a:3, b:2}, {a:1, b:2}]

对重复对象的验证不起作用。为什么?

@Gibbs v3.6.8。这是我的查询:MyCollection.findOneAndUpdate({package_name:req.body.package_name,},{$addToSet:{foo:{a:2,b:3},}}},{upsert:true,multi:true,new:true}(

因为mongo默认将23视为Double。因此CCD_ 4与CCD_。所以它插入。

//NumberInt解决问题

为了避免这种情况,

db.getCollection('test').findOneAndUpdate({
_id: ObjectId("5f0d7ab89e001b53e3995a5b")
},
{
$addToSet: {
foo: {
a: NumberInt(2),
b: NumberInt(3)
}
}
},
{
upsert: true,
multi: true,
new: true
})

最新更新