【发布时间】:2013-12-13 12:08:47
【问题描述】:
这是我的文件
class Store(Document):
store_id = IntField(required=True)
items = ListField(ReferenceField(Item, required=True))
meta = {
'indexes': [
{
'fields': ['campaign_id'],
'unique': True
},
{
'fields': ['items']
}
]
}
我找不到如何通过检索整个列表来获取 ListFIeld len\count 我需要类似的东西
documents.Store.objects.get(store_id=27).items.count()
我已经通过 mongo 控制台找到了如何做到这一点
db.store.find({"store_id" : 27})[0].items.length;
但我需要通过 Mongoengine。
len(documents.Store.objects.get(store_id=27).items) 会检索所有文档然后通过 Python 计算它们吗?
【问题讨论】:
-
您在控制台中的示例还检索项目列表并获取长度 - 与 mongoengine 示例相同。这样做的唯一方法是添加一个计数器字段(预先计算聚合)或使用聚合框架来投影和计算列表的大小
-
所以,我添加了新字段 items_count = IntField(default=0) 以及 add_to_set inc 这个计数器如何?
标签: mongodb mongoengine