【发布时间】:2015-12-31 09:27:21
【问题描述】:
我想在 MongoDB 中编写一个查询,以在文档中插入一个对象(如果它不存在),或者如果它存在于指定的文档中,则增加它的某个字段。下面以两个查询为例:
文档结构:
Movies:
{
integer _id,
string Name,
array(object) WatchingList
[
{
integer UserID,
integer WatchTimes
}
.....
]
}
插入查询:
db.Movies.update({_id:x}, {$push: {WatchingList:{UserID:y,WatchTimes:1}}});
增量查询:
db.Movies.update({_id:x,"WatchingList.UserID":y},{$inc:{"WatchingList.$.WatchTimes":1}});
如何将它们组合成一个或多个查询以达到要求?
【问题讨论】:
-
我可以看看你的文档结构吗?在我看来,你的模型已经犯了错误,我们应该在做任何其他事情之前纠正它。
-
我已经添加了文档结构,你可以看看。
-
先增加观看次数再更新?我的意思是获取观看时间做一个 +1 然后更新。
-
@Abhishek Dey 是的,你可以这样做。但你需要确保我写的两个查询可以组合在一起。
-
@AbhishekDey 这不是原子的并且容易受到竞争条件的影响。
标签: mongodb mongodb-query database