Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
mongodb:获取文档中出现的前x个排名(计数)_Mongodb_Aggregation Framework - Fatal编程技术网

mongodb:获取文档中出现的前x个排名(计数)

mongodb:获取文档中出现的前x个排名(计数),mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有一些包含一般地理位置信息的文档。例如,我正在尝试获得排名前x的城市 { "_id" : ObjectId("593b6a7068c4281a3f7702c5"), "clientID" : "1000000000", "session_id" : "I9Ak2k1taOGHU0Z0000000000", "location" : { "country" : "United States", "city" : "Seat

我有一些包含一般地理位置信息的文档。例如,我正在尝试获得排名前x的城市

{ 
    "_id" : ObjectId("593b6a7068c4281a3f7702c5"), 
    "clientID" : "1000000000", 
    "session_id" : "I9Ak2k1taOGHU0Z0000000000", 
    "location" : {
        "country" : "United States", 
        "city" : "Seattle", 
        "postal" : "98105", 
        "traits" : null, 
        "local" : "America/Los_Angeles"
    }, 
    "dateTime" : ISODate("2017-06-09T21:12:56.819+0000"), 
    "action" : "PLAY",....
}
我是来自sql的mongo新手。我希望通过聚合来实现这一点&在我得到一系列返回的文档后,不需要在代码中实现

我找到了如何按会话id对这些文档进行分组的方法,现在我只需要添加city count的实例,并按降序排序,然后显示这些城市

我的组查询:

db.Playerstats.aggregate(

    // Pipeline
    [
        // Stage 1 for tests
        {
            $match: {
                clientID: "1000000000"
            }
        },

        // Stage 2
        {
            $group: {
                _id : "$session_id", 
                start: { $first: "$dateTime"},
                stop: { $last: "$dateTime"},
                eventID : { $addToSet: "$eventID"},
                status : { $addToSet: "$eventStatus"},
                browser: { $addToSet: "$browser.userAgent"},
                OS : { $addToSet: "$browser.platform"},
                city : { $addToSet: "location.city"},
                p2pData : { $sum: "$p2p.totalVerifiedBytes"},
                actions : { $addToSet: "$action"}
            }
        },

        // Stage 3
        {
            $sort: {
                startDate: -1
            }
        },
    ],
); 

谢谢你的洞察力

我只需要将另一个分组添加到城市查询中,并获得该计数。现在,我可以添加一个限制和排序来进行取整

{
    $group: {
    _id: "$city",
     count: { $sum: 1 }             
    }
}

我只需要在查询中为城市添加另一个分组,并获得该计数。现在,我可以添加一个限制和排序来进行取整

{
    $group: {
    _id: "$city",
     count: { $sum: 1 }             
    }
}

你试过什么?这个问题没有任何企图。如果你表现出一种尝试,那么我们可以在你不理解的部分指导你。但有很多例子值得一读。在我发布的查询的第3阶段之后,我尝试了一个{$group:{{u id:{cust_id:“$city”,count:{???}}}。但是我不知道如何从分组中算出这些总数$组:{u id:$city],计数:{$sum:1}}刚刚包装错误。谢谢你的轻推和链接,你试过什么?这个问题没有任何企图。如果你表现出一种尝试,那么我们可以在你不理解的部分指导你。但有很多例子值得一读。在我发布的查询的第3阶段之后,我尝试了一个{$group:{{u id:{cust_id:“$city”,count:{???}}}。但是我不知道如何从分组中算出这些总数$组:{u id:$city],计数:{$sum:1}}刚刚包装错误。谢谢你的轻推和链接Neil