我在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
)
且lname
为someid
的文档,以及是否有一个objid
为someid
且现有{{ 1}},它将创建一个新文档!但是我想更新第一个,并且不想创建一个新文档。