【发布时间】:2013-01-31 05:19:09
【问题描述】:
我的文档结构如下:
{
"_id" : 1000001,
"ListMembers" : [
{
"MemberID" : 1000,
"Notes" : "Test Notes for 1000"
},
{
"MemberID" : 1001,
"Notes" : "Test Notes for 1002"
}
]
}
应用程序生成一个唯一 ID。 我需要实现以下目标:
- 如果文档不存在,则使用数组插入一个新文档 场地。
- 如果文档存在于集合和成员记录中 存在于数组中然后更新成员注释
- 如果文档在集合中存在且成员记录不存在 存在于数组中,然后在数组中插入成员记录。
这里 #1 和 #2 工作正常,但 {upsert:true} 选项不适用于上面的 #3;如果文档存在但成员记录不存在,它会尝试插入具有相同 ID 的新文档,这显然会给我一个重复键错误。 MongoDB 在这种情况下是否支持 UPSERT 操作,或者我是否需要检查文档是否存在,然后对 #1 和 ($pull 和 $push) 执行 INSERT 以在数组字段上实现 #2 和 #3。
【问题讨论】:
-
我今天遇到了这个问题,发现先执行 $pull 然后 $push 适用于所有三个条件。
标签: mongodb