mongoengine中的Model.objects、Model.objects()、Model.objects.all()有什么区别?
What's the differenct among Model.objects, Model.objects(), and Model.objects.all() in mongoengine?
正如标题described.When我们有一个mongoengine模型如下:
class Model(Document):
some fields definition~~
而我通过Model向数据库中添加了一些item,当我想遍历所有item时,有3种方式,我应该使用哪种?
首先:
for model in Model.objects:
do something to model~~
第二个:
for model in Model.objects():
do something to model~~
第三个:
for model in Model.objects.all():
do something to model~~
看来三种方式表现一样~~
好问题!这是我的看法:
当您想要获取集合中的所有文档时,它们都是相似的。所有这些 return 一个您可以对其进行迭代的查询集。但是,如果你想过滤结果,你应该使用 objects()。像这样:
for model in Model.objects(first_name='John', last_name='Doe'):
do something to model~~
ojbects.all() 在我看来没什么用,添加到完整性中是因为有一个对称的 objects.first() 方法。也许在某些情况下,使用 objects.all() 是明确的且更具可读性。
如果您想获得一系列文档,您可以将数组切片语法与 objects 一起使用,这看起来非常好并且可读。
for model in Model.objects[10:20]:
do something to model~~
如果不对 objects 使用数组切片语法,确定范围真的很痛苦:
for model in Model.objects().skip(10).limit(20): # not recommended
do something to model~~
本质上,objects.all()是无用的或用于可读性,objects有利于获取所有文档和/或一系列文档和 objects() 适用于使用某些过滤器限制 returned 文档。
祝你有个愉快的一天!
正如标题described.When我们有一个mongoengine模型如下:
class Model(Document):
some fields definition~~
而我通过Model向数据库中添加了一些item,当我想遍历所有item时,有3种方式,我应该使用哪种?
首先:
for model in Model.objects:
do something to model~~
第二个:
for model in Model.objects():
do something to model~~
第三个:
for model in Model.objects.all():
do something to model~~
看来三种方式表现一样~~
好问题!这是我的看法:
当您想要获取集合中的所有文档时,它们都是相似的。所有这些 return 一个您可以对其进行迭代的查询集。但是,如果你想过滤结果,你应该使用 objects()。像这样:
for model in Model.objects(first_name='John', last_name='Doe'):
do something to model~~
ojbects.all() 在我看来没什么用,添加到完整性中是因为有一个对称的 objects.first() 方法。也许在某些情况下,使用 objects.all() 是明确的且更具可读性。
如果您想获得一系列文档,您可以将数组切片语法与 objects 一起使用,这看起来非常好并且可读。
for model in Model.objects[10:20]:
do something to model~~
如果不对 objects 使用数组切片语法,确定范围真的很痛苦:
for model in Model.objects().skip(10).limit(20): # not recommended
do something to model~~
本质上,objects.all()是无用的或用于可读性,objects有利于获取所有文档和/或一系列文档和 objects() 适用于使用某些过滤器限制 returned 文档。
祝你有个愉快的一天!