我正在使用django和mongoengine,这就是让我感到困惑的一点:
如何实现{name:null}存储在mongoDB中。 通过 mongo shell 很容易实现,但是我无法通过mongoengine模型找到这样做的方法。
此外,
class Person(Document):
name = StringField(null=True)
似乎 null 参数没有做任何事情。
1。型号:
class Person(Document):
name = StringField()
用法:
person = Person()
person.save()
导致mongoDB:
{ "_id" : ObjectId("...") }
2。型号:
class Person(Document):
name = StringField(null=True)
用法:
person = Person(name=None)
person.save()
导致mongoDB:
{ "_id" : ObjectId("...") }
3。型号:
class Person(Document):
name = StringField(null=True, required=True)
用法:
person = Person(name=None)
person.save()
导致mongoDB:
ValidationError (Person:None) (Field is required: ['name'])
null 参数的作用是什么?
如何通过mongoengine在 mongoDB 中存储 null 值?
答案 0 :(得分:0)
我认为您正在寻找default
参数。从文档中:
mongoengine.base.fields.BaseField类
...
默认值–(可选)如果未设置任何值(或未设置该值)的默认值。它可以被调用。
答案 1 :(得分:0)
null
参数实际上可以解决问题。
参见下文:
class Person(Document):
name = StringField(null=True)
person = Person().save()
# check raw object that got stored
pymongo_coll = Person._get_collection()
assert pymongo_coll.find_one() == {'_id': person.id, 'name': None}