使用两个条件检查记录的最简单方法是什么,如果不存在则插入,如果存在一个或多个,则更新所有条件

时间:2013-03-21 03:53:48

标签: mongodb flask mongoengine

我有一段时间在做查询。

有一个building_id,用户名和正确的字段。

我们需要查看用户和特定建筑物是否存在任何记录(因为他们只能进行一次投票)。

如果它不存在,我们需要插入一条带有building_id,username和right的新记录。

如果确实存在,我们需要找到包含building_id和用户名的记录,并更新为新的投票。

我一直在玩save,update,get_or_create,他们都会不断出现错误。如何在MongoEngine中完成?

1 个答案:

答案 0 :(得分:0)

您可以使用简单的更新,将upsert和multiple设置为true:

http://docs.mongodb.org/manual/reference/method/db.collection.update/

语法如下:

db.collection.update(
   <query>,
   <update>,
   { upsert: <boolean>, multi: <boolean> }
)

关于检查两个条件,您的查询可以包含任意数量。

我不知道你的收藏品,但也许:

db.yourCollection.update({"user": "someUser", "buildindId": "someBuildingId"}, {"correct": "your correction"}, {upsert: true, multi: true})