我有这样的通知点击表:
{
"_id" : ObjectId("5d00d4e1d720cc4cb1b24566"),
"createdOn" : ISODate("2019-06-12T10:33:05.866Z"),
"notification_center_id" : [
ObjectId("5c59343523f05e2ff13938d6")
],
"user_id" : ObjectId("5bc5dc03f6d24d29077dd362"),
"__v" : 0
}
我想检查user_id“ 5bc5dc03f6d24d29077dd362”是否已经存在,然后在已经存在的记录中添加另一个notification_center_id。
像这样
{
"_id" : ObjectId("5d00d4e1d720cc4cb1b24566"),
"createdOn" : ISODate("2019-06-12T10:33:05.866Z"),
"notification_center_id" : [
ObjectId("5c59343523f05e2ff13938d6"),
ObjectId("5c5c4610c6d91403f38eda52")
],
"user_id" : ObjectId("5bc5dc03f6d24d29077dd362"),
"__v" : 0
}
我想查询首先检查用户ID是否存在,然后在notification_center_id字段中添加另一个通知记录。 如果用户不存在,那么我想在集合中添加另一个记录 如果没有插入notification_center_id,则这里还有一个条件重复。如果存在,则不添加。 请帮助我。
答案 0 :(得分:1)
db.getCollection('test').update(
{"user_id" : ObjectId("5bc5dc03f6d24d29077dd362")},
{"$push" : {"notification_center_id" : new ObjectId()}}
)
在您的问题中,您没有提到如果user_id不存在该怎么办。所以在这种情况下什么也不做。
发表评论后
db.getCollection('test').update(
{"user_id" : ObjectId("5c59343523f05e2ff13938d6")},
{
"$push" : {"notification_center_id" : new ObjectId()},
"$setOnInsert" : {"createdOn" : new ISODate(), "__v" : 0}
},
{"upsert" : true}
)
答案 1 :(得分:0)
$ addToSet更新运算符用于将元素附加到数组,并保留值在数组中的唯一性。
db.notifications.update({"_id" : ObjectId("5d00d4e1d720cc4cb1b24566")}
, { $addToSet: { notification_center_id: new ObjectId() } })