Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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_Mongodb Query_Aggregation Framework - Fatal编程技术网

Python 数组内多个条目上的Mongodb聚合查询

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

我有一个mongo DB,看起来像这样-->

集合名称:用户

{ 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语法基本相同,因此通常应使用直接示例,例如