如果mongoengine中的null为空,则更新字段

时间:2019-04-10 14:45:52

标签: python mongodb pymongo mongoengine

如果这样的字段是None,我需要更新文档的一个字段,但是如果这样的字段具有值,我不想覆盖它。

现在我正在执行以下操作:

p = Person.objects(name="Foo").first()
if p.address is None:
    p.update(set__address="Bar Street, NY")

但这不是原子操作。

我想做的事情是这样的:

Person.objects(name="Foo").update_one(set__address_if_none="Bar Street, NY")

但是我似乎在网上找不到任何东西。

有没有类似的东西,或者可以通过其他方式实现这一目标?

1 个答案:

答案 0 :(得分:1)

像这样吗?

Person.objects(name="Foo", address=None).update(set__address="Bar Street, NY")

尽管据我所知,这并不是原子的。我的意思是在单个文档中它是原子的,但在集合中却不是。要真正做到原子,您需要进行Mongo seems to support now