给出一个MongoDB的集合是这样的:蒙戈DB分组+不同
c = [{
"name": "john",
"tags": ["a", "b", "c"],
"values": [1, 2, 3]
},
{
"name": "paul",
"tags": ["a", "d"],
"values": [3, 4, 5]
}
]
我想提出符合某些条件的查询,然后返回可从检索的文档的所有条件的不同副本,因此如果我查询:
“所有那些标签的文件包括价值a
”
我会得到:
[
{
"name": "john"
},
{
"name": "paul"
},
"aggregated_tags": ["a", "b", "c", "d"],
"aggregated_values": [1, 2, 3, 4, 5]
]
我已经来到了一个解决方案,但我不喜欢它,因为它涉及到在Python列表处理,以确保我过滤掉所有重复的方面,我在“available_tags”和“available_values”了,所以我我正在寻找一个完成这项工作的聚合命令。
我知道我应该使用某种类型的mongo聚合,但即使我能够使用正确的标准进行查询,但我仍然无法弄清楚如何聚合/区分作为结果得到的条件字段。
查看$ unwind运算符。这使数组像我想你想要的:http://docs.mongodb.org/manual/reference/operator/aggregation/unwind/ – Alex
谢谢。我想我想出了如何使用'$ unwind',但我仍然不确定这是否是最好的方法。我将在明天更新答案。 –