我的文档包含一般的地理位置信息。我正在尝试以前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",....
}
我是mongo的新手,来自sql。我希望使用聚合& amp;在我获得一系列文档后,我没有在代码中执行此操作。
我想出了如何通过session_id对这些文档进行分组,现在我只需要添加按降序排序的城市计数实例,然后只显示这些城市。
我的群组查询:
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
}
},
],
);
感谢您的任何见解。
答案 0 :(得分:0)
我只需要为城市的查询添加另一个分组并获得该数量。现在我可以添加限制和排序来完善它。
{
$group: {
_id: "$city",
count: { $sum: 1 }
}
}