【发布时间】:2015-10-07 10:25:09
【问题描述】:
我有一个带有 doc 的 mongo 集合,如下所示:-
{
"_id" : ObjectId("55a9378ee2874f0ed7b7cb7e"),
"_uid" : 10,
"impressions" : [
{
"pos" : 6,
"id" : 123,
"service" : "furniture"
},
{
"pos" : 0,
"id" : 128,
"service" : "electronics"
},
{
"pos" : 2,
"id" : 127,
"service" : "furniture"
},
{
"pos" : 2,
"id" : 125,
"service" : "electronics"
},
{
"pos" : 10,
"id" : 124,
"service" : "electronics"
}
]
},
{
"_id" : ObjectId("55a9378ee2874f0ed7b7cb7f"),
"_uid" : 11,
"impressions" : [
{
"pos" : 1,
"id" : 124,
"service" : "furniture"
},
{
"pos" : 10,
"id" : 124,
"service" : "electronics"
},
{
"pos" : 1,
"id" : 123,
"service" : "furniture"
},
{
"pos" : 21,
"id" : 122,
"service" : "furniture"
},
{
"pos" : 3,
"id" : 125,
"service" : "electronics"
},
{
"pos" : 10,
"id" : 121,
"service" : "electronics"
}
]
}
我的目标是在特定的"service" 中找到所有"id",比如"furniture",即得到这样的结果:
[122,123,124,127]
但我无法弄清楚如何在
中构建条件db.collection_name.find()
因为很难为数组中的第 'n' 个元素设置条件,"impressions[n]":"value"。
一种选择是使用获得的"id"s 执行聚合操作来查找服务的每个"id" 的展示次数,正如我之前提出的这个问题的答案所建议的那样:-
MapReduce in PyMongo。
但我只想要服务中不同的'id' 列表,而不是展示次数。
请帮忙!
【问题讨论】:
-
您能否再次检查您的上述文件?上面的文档有 2 个 _uid 字段和 2 个“印象”字段,它们应该是 2 个单独的文档吗?
标签: python mongodb mongodb-query pymongo aggregation-framework