我有一个包含以下字段的文档:
{
"id" : 15,
"existingCodes" : [
{
"_id" : ObjectId("5c49a6c03a95f50b15409296"),
"code" : "first"
},
{
"_id" : ObjectId("5c49a6c03a95f50b15409295"),
"code" : "second"
},
{
"_id" : ObjectId("5c49a6c03a95f50b15409294"),
"code" : "third"
},
{
"_id" : ObjectId("5c49a6c03a95f50b15409293"),
"code" : "fourth"
}
]
}
问题是我正在尝试将新对象推入existingCodes
数组,但要确保code
值不存在,并且我尝试过的每个解决方案都不存在工作。
我尝试使用$push
和$ne
来实现这一点,但是它添加了重复的字段:
db.getCollection('codes').update({ id: 15, 'existingCodes.code': { $ne: 'first' } }, { $push: { existingCodes: { code: 'first' } } })
但是,如果我将$ne
更改为匹配“第二”或任何其他不同于“第一”的现有code
值,它不会添加重复字段,而且我也不明白为什么。 / p>
我也尝试使用$addToSet
:
db.getCollection('codes').update({ id: 15, }, { $addToSet: { existingCodes: { code: 'first' } } })