Python Mongo引擎查询referencefield

Python Mongo引擎查询referencefield,python,mongodb,django-mongodb-engine,Python,Mongodb,Django Mongodb Engine,我已经定义了class语句: 来自mongoengine导入的* 类数据文档(文档): """ """ 仪表id=StringField(最大长度=10,唯一性=True,必需性=True) 勾选数据=参考字段(勾选文档) 类文档(文档): """ """ 价格=十进制字段(精度=2,要求=真) 体积=朗菲尔德(必需=真) 营业额=分米字段(精度=2,要求=真) 更新时间=日期时间字段(唯一=真,必需=真) 我想查询某段时间内的更新时间 TickDataDocument.objects(in

我已经定义了class语句:

来自mongoengine导入的
*
类数据文档(文档):
"""
"""
仪表id=StringField(最大长度=10,唯一性=True,必需性=True)
勾选数据=参考字段(勾选文档)
类文档(文档):
"""
"""
价格=十进制字段(精度=2,要求=真)
体积=朗菲尔德(必需=真)
营业额=分米字段(精度=2,要求=真)
更新时间=日期时间字段(唯一=真,必需=真)
我想查询某段时间内的更新时间

 TickDataDocument.objects(instrument_id="fa1100").filter(tick_data__ update_time__lt =datetime.datetime(2013,9,3))
但我有错误:

mongoengine.errors.InvalidQueryError:无法在mongoDB中执行加入: 勾选数据更新时间


我如何才能找到一个在mongoengine中查询内部引用字段的解决方案。

如评论中所建议的,我分两步(两次查询)完成此操作:

如果有更简单的解决方案,我也很感兴趣。

您可以在mongoengine中使用该方法并使用语法进行连接和查询,请注意使用聚合方法返回的是游标对象,而不是查询集

例子
TickDataDocument.objects().aggregate([
{“$match”:{“instrument_id”:“fa1100”},
{“$lookup”:{
“from”:TickDocument.\u get\u collection\u name(),
“localField”:“勾选数据”,
“外域”:“\u id”,
“as”:“勾选”
}},
{“$match”:{
“勾选更新时间”:{“$lt”:datetime.datetime(2013,9,3)}
}}
])

您能提出两种不同的查询吗?首先获取tickdatadocuments并在tickDocument中查询这些文档?这是唯一的方法吗?如果
TickDocument
有太多行,可能是内存问题。@Hide yes有,请查看我的答案
tick_docs = list(TickDocument.object(update_time__lt)=datetime.datetime(2013,9,3))

TickDataDocument.objects(instrument_id="fa1100").filter(tick_data__in=tick_docs)