arrays - 如果不存在,MongoDB 将值添加到数组

标签 arrays mongodb collections

我有这个系列:

{
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/

相关文章:

c# - 最大数组维度,如 a[1][1][1][1]....[1]在 C#

python - 以矩阵形式将列表排列到numpy数组

javascript - 一种更优雅的方式来处理 Angular 应用程序中的过滤值

c++ - mongo-cxx-driver - 新的 C++11 驱动程序 - 如何从二进制数据创建文档

java - 如何将 map 转换为大名单?

JAVA从数组转为列表并使用shuffle方法

java - 避免循环内使用 toCharArray() 或 arrayCopy 产生冗余

javascript - 替换 Angular 的 forEach() 中的对象

javascript - 对 NodeJS 服务器的超慢发布请求

c# - 我可以从匿名类中定义数组或列表吗?