Python 数组内多个条目上的Mongodb聚合查询
我有一个mongo DB,看起来像这样--> 集合名称:用户Python 数组内多个条目上的Mongodb聚合查询,python,mongodb,mongodb-query,aggregation-framework,Python,Mongodb,Mongodb Query,Aggregation Framework,我有一个mongo DB,看起来像这样--> 集合名称:用户 { username:'something' _id : ObjectId(someID1) acl : { users : [ObjectId(someID1),ObjectId(someID2),ObjectId(someID3)] , group : [grpID4,grpID5,grpID6] } . . . } 我想要一个聚合查询,它在所有文档中查找db.users.acl.users,并查找每个唯一o
{ username:'something'
_id : ObjectId(someID1)
acl : { users : [ObjectId(someID1),ObjectId(someID2),ObjectId(someID3)] , group : [grpID4,grpID5,grpID6] }
.
.
.
}
我想要一个聚合查询,它在所有文档中查找db.users.acl.users,并查找每个唯一objectID的计数
这就像添加users.acl.users的所有数组,然后返回python字典中每个唯一ID的计数
{
"result" : [
{
"_id" : ObjectId("someID1"),
"count" : 20
},
{
"_id" : ObjectId("someID2"),
"count" : 2
},
{
"_id" : ObjectID("someID3")
"count" : 1
},
],
"ok" : 1
}
我已经尝试过pythonic方法,即首先添加所有数组,然后查找计数,但我希望通过查询比通过python做得更多。我不知道如何在这样的数组中进行查询
知道从哪里开始吗?通常,在聚合框架中使用MongoDB中的数组时,您希望使用管道操作符将内容“反规范化”为单独的文档。允许您在其他管道阶段使用它们:
db.users.aggregate([
{ "$unwind": "$acl.users" },
{ "$group": {
"_id": "$acl.users",
"count": { "$sum": 1 }
}}
])
Python语法基本上与JavaScript的shell语法相同,因此直接示例(如)通常应适用。在聚合框架中使用MongoDB中的数组时,通常需要使用管道操作符将内容作为单独的文档“反规范化”。允许您在其他管道阶段使用它们:
db.users.aggregate([
{ "$unwind": "$acl.users" },
{ "$group": {
"_id": "$acl.users",
"count": { "$sum": 1 }
}}
])
Python语法基本上与JavaScript的shell语法相同,因此直接示例(如)通常应适用。在聚合框架中使用MongoDB中的数组时,通常需要使用管道操作符将内容作为单独的文档“反规范化”。允许您在其他管道阶段使用它们:
db.users.aggregate([
{ "$unwind": "$acl.users" },
{ "$group": {
"_id": "$acl.users",
"count": { "$sum": 1 }
}}
])
Python语法基本上与JavaScript的shell语法相同,因此直接示例(如)通常应适用。在聚合框架中使用MongoDB中的数组时,通常需要使用管道操作符将内容作为单独的文档“反规范化”。允许您在其他管道阶段使用它们:
db.users.aggregate([
{ "$unwind": "$acl.users" },
{ "$group": {
"_id": "$acl.users",
"count": { "$sum": 1 }
}}
])
Python语法通常与JavaScript的shell语法基本相同,因此通常应使用直接示例,例如