我如何用一个要求更新文档并且不设置字段存在而将其设置为其他

时间:2019-02-15 14:59:05

标签: python mongodb pymongo mongoengine

我在mongo上有一个文档,我想通过一个请求对其进行更新。但是对于我的更新,如果文档中不存在该字段,我想设置一些特定的字段,否则,我想将其设置为我要发送的内容。

我可以通过mongoengine(或pymongo)的两个请求来做到这一点:

class TestModel(Document):
    objid = StringField()
    name = StringField()
    lname = StringField()

temp = TestModel.objects(objid="someid").first()
if not temp:
    temp = TestModel(objid="someid")
if not temp.lname:
    temp.lname = "somelname"
temp.save()

但是我想通过一个请求来做到这一点。我尝试使用update_many的{​​{1}}函数,但它对我没有帮助:

upsert=True

此搜索将搜索没有TestModelCollection.update_many( { "objid": "someid", "lname": { "$exists": False } }, { "$set": { "lname": "somelname" "name": "somename" } }, upsert=True ) lnamesomeid的文档,以及是否有一个objidsomeid且现有{{ 1}},它将创建一个新文档!但是我想更新第一个,并且不想创建一个新文档。

0 个答案:

没有答案