我正在尝试在mongodb中实现嵌套组查询,并且我试图通过添加外部组而陷入困境.鉴于以下(简化)数据文件:
{
"timestamp" : ISODate(),
"category" : "movies",
"term" : "my movie"
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试获得所有类别的列表,并且在类别中应该有最多的术语.我希望我的输出像这样:
[
{ category: "movies",
terms: [ { term: "movie 1", total: 5000 }, { term: "movie 2", total: 200 } ... ]
},
{ category: "sports",
terms: [ { term: "football 1", total: 4000 }, { term: "tennis 2", total: 250 } ... ]
},
]
Run Code Online (Sandbox Code Playgroud)
我的"内部组"如下所示,并将获得所有类别的前5名:
db.collection.aggregate([
{ $match : { "timestamp": { $gt: ISODate("2014-08-27") } } },
{ $group : { _id …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个查询来返回每个类别中的前 X 个术语 - 例如前 5 个、前 10 个术语等。每个术语都有一个关联的类别,并且基于另一个stackoverflow 问题的一些帮助,我设法得到了这个:
db.collection.aggregate([
{
$group : {
_id : {
category: "$uri.category",
term: "$uri.term",
},
total: { $sum : 1 }
}
},
{ $sort : { total : -1 } },
{
$group : {
_id : "$_id.category",
terms: {
$push: {
term: "$_id.term",
total: "$total"
}
}
}
}
]);
Run Code Online (Sandbox Code Playgroud)
上面的查询确实有效,并返回如下所示的数据:
[
{ category: "movies",
terms: [ { term: "movie 1", total: 5000 }, { term: "movie 2", …Run Code Online (Sandbox Code Playgroud)