我有这个系列:
{
username : "user1",
arr : [
{
name : "test1",
times : 0
},
{
name : "test2",
times : 5
}
]
}
我有一个带有一些对象的数组。该对象具有名称和值时间。现在我想添加新对象,如果我的数组不包含它们。例子:
我已经在集合中拥有这两个名称为“test1”和“test2”的对象。我现在想插入对象“test2”、“test3”和“test4”。它应该只将对象“test3”和“test4”添加到数组中,而不是再次添加“test2”。在这种情况下,值时间不做任何事情,它们在插入时应该只有值 0。
有没有办法通过一个查询来做到这一点?
最佳答案
如果可以插入test1
, test2
,... 一个一个,然后你就可以做这样的事情了。
db.collection.update(
{username : "user1", 'arr.name': {$ne: 'test2'}},
{$push: {
arr: {'name': 'test2', 'times': 0}
}
})
$ne
如果名称已存在于 arr
中,则条件将阻止更新.
关于arrays - 如果不存在,MongoDB 将值添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42115946/