2015-07-10 109 views
0

我一直想查询一些蒙戈实例变量,Python和MongoEngine 我需要从每一个RegistroPozo得到所有变量在所有的收藏。Quering嵌套文件查询与Mongoengine

示例代码:

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)) 

回答

0

波索是蒙戈分贝水平单个文档。嵌入式文件只是mongoengine结构。因此,当您阅读Pozo对象时,所有嵌入式文档也可用于相同的查询(请参阅mongostat)。现在迭代这些数据并不是一个大问题。有关高级EmbeddedDocumentList查询,请阅读文档here