匹配的文件,并得到所有值在蒙戈3.4使用MongoDB的聚集到了现场
我与格式文档的集合:
类型1:
{
"Level1": {
"@version": "genR",
"@revision": "aux",
"Level2": {
"container": {
"type": "ARRAY",
"categories": [
{
"category": [
{
"Type": "STRING",
"Value": "Currency"
},
{
"Type": "STRING",
"Value": "EUR"
}
]
},
{
"category": [
{
"Type": "STRING",
"Value": "Portfolio"
},
{
"Type": "STRING",
"Value": "ABCDEF"
}
]
},
]
}
}
}
}
类型2:
{
"Level1": {
"@version": "genR",
"@revision": "aux",
"Level2": {
"container": {
"type": "ARRAY",
"categories": [
{
"category": [
{
"Type": "STRING",
"Value": "Currency"
},
{
"Type": "STRING",
"Value": "EUR"
}
]
},
{
"category": [
{
"Type": "STRING",
"Value": "Portfolio"
},
{
"Type": "STRING",
"Value": "ABCDEF"
}
]
},
{
"category": [
{
"Type": "STRING",
"Value": "Short Description"
},
{
"Type": "STRING",
"Value": "Cash Only"
}
]
},
]
}
}
}
}
我该如何编写一个汇总语句,以便我可以从文档中获得所有货币值在哪里投资组合匹配一定的价值。
我一直用如下pymongo的总框架:
pipeline = [{"$unwind":"$Level1.Level2.container.categories"},{"$unwind":"$Level1.Level2.container.categories.category"},{"$match":{"Level1.Level2.container.categories.category.Value":"Portfolio"}}]
pprint(db.command('aggregate',collection,pipeline=pipeline))
但没有结果。 Pymongo有点混乱。即使有人可以指出一般的方法,它确实会有所帮助。
预期的响应假设4个匹配文件(分别设定不同的类别项目数量):
{'Currency': [{'Level1': {'Level2': {'container': {'categories': {'category': {'Value': 'EUR'}}}}}},
{'Level1': {'Level2': {'container': {'categories': {'category': {'Value': 'EUR'}}}}}},
{'Level1': {'Level2': {'container': {'categories': {'category': {'Value': 'USD'}}}}}},
{'Level1': {'Level2': {'container': {'categories': {'category': {'Value': 'EUR'}}}}}}]}
这是给我所有的类别,除了投资组合。但是你指出了我的正确方向。我会尽快更新评论。谢谢 – sunny
Np。请添加预期的json响应,并相应地调整查询。 – Veeram
我还有其他文档具有比'Portfolio'和'Currency'更多的'category'字段。此类别子结构基于文档类型是动态的。 – sunny