用Mongoengine查询嵌套文档

用Mongoengine查询嵌套文档,mongoengine,Mongoengine,我一直在尝试使用python和 我需要从所有集合中的每个RegistroPozo获取所有变量 示例代码: from mongoengine import * class Variable(EmbeddedDocument): mnem=StringField(required=True, max_length=200) description=StringField(max_length=500) unit=StringField( max_length=200,defa

我一直在尝试使用python和 我需要从所有集合中的每个RegistroPozo获取所有变量

示例代码:

from mongoengine import *
class Variable(EmbeddedDocument):
    mnem=StringField(required=True, max_length=200)
    description=StringField(max_length=500)
    unit=StringField( max_length=200,default='ppm')
    alias=StringField( max_length=200) #,default=mnem
    type=StringField( max_length=200,default='DEPENDANT')



class RegistroPozo(EmbeddedDocument):
    fecha = DateTimeField()
    filepath = StringField()
    start = FloatField()
    step = FloatField()
    stop = FloatField()
    variables = EmbeddedDocumentListField(Variable)
    registros = ListField(DictField())
    version_information_block = StringField(max_length=500)
    well_information_block = StringField(max_length=500)
    curve_information_block = StringField(max_length=500)
    parameter_information_block = StringField(max_length=500)
    other_block = StringField(max_length=500)


class Pozo(DynamicDocument):
  uwi_pozo = StringField(required=True, max_length=200, primary_key=True)
  nom_pozo = StringField(required=True, max_length=200)
  prof_total = FloatField(required=True)
  elev_terr = FloatField(required=True)
  long_pozo = FloatField(required=True)
  lat_pozo = FloatField(required=True)
  coord_x_po = FloatField(required=True)
  coord_y_po = FloatField(required=True)
  registros_pozo=EmbeddedDocumentListField(RegistroPozo)
当我尝试查询时,我会做很多循环,但我相信有更好的方法。 比如:

variables_in_all_the_doc = Pozo.objects(Q(AdvanceQuery))

Pozo是mongo db级别的单个文档。嵌入的文档只是mongoengine构造。因此,当您读取Pozo对象时,所有嵌入的文档也可以在同一查询中使用check。现在对这些数据进行迭代并不是什么大问题。对于高级EmbeddedDocumentList查询,请阅读文档