如何在mongoDb中检查Object是否不在数组中?

时间:2017-03-06 15:18:02

标签: mongodb

我想在成员数组中推送Object,如果它不存在的话。 有没有办法检查对象是不是在mongodb中的数组?

{
 _id: 1111,
 members:[
 {user_id: 11},
 {user_id: 12},
 {user_id: 13}
 ]
}

所以我想检查一下:

newUser = {user_id: 14}

不在成员数组中,如果不是 - 将其推送到那里。 坚持下去。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

使用$ nin运算符检查members数组是否包含user_id等于14的文档。更新很简单$ push:

db.collection.update({'members.user_id':{$nin: [14]}}, {$push:{members:{user_id:14}}})

答案 1 :(得分:0)

首先,您必须检查文档中的数组是否包含该特定对象。使用elemMatch进行此操作

db.collection.find(
   { _id: 1111, members: { $elemMatch: { user_id: 14 } } }
)

然后,如果上面没有返回你将对象推入

db.collection.update(
   { _id: 1111 },
   { $push: { user_id: 14 } }
)