import mongoengine
class MyLog(mongoengine.EmbeddedDocument):
text = mongoengine.StringField()
class Server(mongoengine.DynamicDocument):
name = mongoengine.StringField()
status = mongoengine.StringField()
text_list = mongoengine.ListField(mongoengine.EmbeddedDocumentField(MyLog))
默认情况下, Server.objects.all()
queryset不包含text_list
字段的值。
我要这样做 - (为查询集中的每个对象获取text_list
字段的值。
for s in Server.objects.all():
print s.text_list
在我的情况/场景中,我不能这样做,我的意思是我必须在查询集本身中获取所有数据(或者换句话说,我需要一个查询集,它将为我提供所有嵌套的详细信息不使用obj.text_list
)
例如。
进一步在mongo shell中 -
db.server.find()
包含所有嵌套的嵌入文档。
{
'_id': ObjectId("272742942qbe5451b4f4b9e7"),
'name':'nm',
'status': 'st',
'text_list': [
{# here it's including embedded model's info too, no need to make extra query, looking for similar query in mongoengine orm
'text': 'done'
}
]
}
我们如何使用orm或raw_query在mongoengine中执行此操作。
我可以使用to_json()
方法
json.loads(queryset.to_json())
Server.objects.all().to_json()
返回包含嵌入式模型信息的结果,但在数百万个文档中使用分页时效率不高,我的意思是在这种情况下mongo会尝试将所有对象转换为to_json。
答案 0 :(得分:0)