如果在 mongoengine 中为空则更新字段

Update field if is null in 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")

但我似乎无法在网上找到任何相关信息。

有没有类似的东西,或者我可以用不同的方式实现它?

是这样的吗?

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

尽管据我所知这 也不是 原子的。我的意思是它在单个文档上是原子的,但在集合上不是。要成为真正的原子,您需要一个 Mongo seems to support now.

的交易