【发布时间】:2014-02-19 03:10:30
【问题描述】:
我的文档中有一组“状态”:
{
"_id: ObjectId("53026de61e30e2525d000004")
"states" : [
{
"name" : "complete",
"userId" : ObjectId("52f4576126cd0cbe2f000005"),
"_id" : ObjectId("53026e16c054fc575d000004")
},
{
"name" : "active",
"userId" : ObjectId("52f4576126cd0cbe2f000005"),
"_id" : ObjectId("53026de61e30e2525d000004")
}
]
}
当有新状态时,我只是在数组的前面插入一个新状态。在此处发布 mongo 2.6 之前的当前工作:Can you have mongo $push prepend instead of append?
但是我不希望用户能够连续两次保存相同的状态。 IE。如果它已经完成,您应该无法添加另一个“完成”状态。有没有一种方法可以检查数组中的第一个元素,如果它在一个查询/更新命令中与 mongo 不同,则仅插入新状态。
我说一个查询/更新是因为 mongo 不支持事务所以我不想查询数组中的第一个元素然后发送另一个更新语句,因为如果插入另一个状态可能会导致问题在我的查询和我的更新之间。
【问题讨论】: