我想在成员数组中推送Object,如果它不存在的话。 有没有办法检查对象是不是在mongodb中的数组?
{
_id: 1111,
members:[
{user_id: 11},
{user_id: 12},
{user_id: 13}
]
}
所以我想检查一下:
newUser = {user_id: 14}
不在成员数组中,如果不是 - 将其推送到那里。 坚持下去。提前感谢您的帮助。
答案 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 } }
)