Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MongoDB:查询被引用单据的字段_Python_Mongodb_Flask_Mongoengine - Fatal编程技术网

Python MongoDB:查询被引用单据的字段

Python MongoDB:查询被引用单据的字段,python,mongodb,flask,mongoengine,Python,Mongodb,Flask,Mongoengine,我正在编写一个Flask应用程序,它报告与内容项相关的不同指标,例如视图数。度量数据是从各种来源导入的,我使用MongoDB将其存储在本地。我用烧瓶里的MongoEngine查询它 数据结构如下: 每个“MetricData”文档引用一个“Metric”和一个“ContentInstance”,即一个Metric有多个MetricData,而一个ContentInstance有多个MetricData-以下是mongo shell中的“Metric_data”文档示例: { _id:Object

我正在编写一个Flask应用程序,它报告与内容项相关的不同指标,例如视图数。度量数据是从各种来源导入的,我使用MongoDB将其存储在本地。我用烧瓶里的MongoEngine查询它

数据结构如下:

每个“MetricData”文档引用一个“Metric”和一个“ContentInstance”,即一个Metric有多个MetricData,而一个ContentInstance有多个MetricData-以下是mongo shell中的“Metric_data”文档示例:

{ _id:Objected536B05FC182AFF24CA916C22, 公制:对象536AE244182AFF1F2222F000C7, 内容\ U实例:Objected536ADCEF182AFF1e73D6E021, ... } 每个“ContentInstance”文档引用一个“类别”和一个“源”,即一个类别有多个ContentInstance,而一个源有多个ContentInstance—以下是mongo shell中的“content_instance”文档示例:

{ _id:Objected536ADCEF182AFF1E73D6E043, 类别:对象5369C352182AFF28CF18E912, 来源:Objected5369C384182AFF28CF18E914, ... } 我需要按度量、源和类别查询度量数据。我知道我不能进行连接,需要多个查询。我只是想确认我使用的查询是否适合这个用例,并且没有其他更高效、更可伸缩的方式来完成同样的事情,而不是更复杂

如果我将常规RDBMS与Django之类的常规Python ORM一起使用,我可以这样做,但它不适用于MongoDB/MongoEngine:

md\u list=MetricData.objects.filtermetric\u title\u= “视图数量”、“令人惊叹”, 内容\实例\源\标题\中= 谷歌、Facebook、, 内容\实例\类别\标题\中= “苹果”,“橘子” 以下是我现在所做的,MongoEngine注:按标题过滤只是一个示例,实际过滤基于用户的查询:

metric\u list=metric.objects.filtertitle\u in='Number of views','Awesomeness' source\u list=source.objects.filtertile\u在='Google','Facebook' cat_list=Category.objects.filtertitle_u在class='Apples','Oranges' cont_inst_list=ContentInstance.objects.filtersource_in=source_list, 类别=类别列表 md\u list=MetricData.objects.filtermetric\u in=metric\u list, content\u instance\u in=cont\u inst\u list
这样提问可以吗?特别是,我担心从一个查询返回多少ContentInstance文档并将其作为参数传递给另一个查询—到目前为止,我的测试数据有限,cont_inst_list的长度已经是147。如果您对此有任何建议,我们将不胜感激。

使用EmbeddedDocumentField和EmbeddedDocument,您可以执行类似Django ORM的查询


示例

很高兴知道。。。然而,我并没有使用EmbeddedDocument,只是使用带有引用字段的不同文档模型。我需要根据许多不同的维度查询度量数据,数据不能很好地嵌入到一个特定的集合中。。。因此,EmbeddedDocument不是我的选择。我在问我所做的是否是正确的方法,因为它们是具有引用的不同顶级集合。