7
我想在MongoDB中实现一个嵌套的组查询,并且我试图添加外部组。鉴于下面(简化)的数据文件:MongoDB嵌套组?
{
"timestamp" : ISODate(),
"category" : "movies",
"term" : "my movie"
}
我试图实现所有类别的列表,并在类别内应该有最多的条款数量。我想我的输出是这样的:
[
{ 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 } ... ]
},
]
我的“内部组”如下图所示,并且将获得最高5 所有类别:
db.collection.aggregate([
{ $match : { "timestamp": { $gt: ISODate("2014-08-27") } } },
{ $group : { _id : "$term", total : { $sum : 1 } } },
{ $sort : { total : -1 } },
{ $limit: 5 }
]);
// Outputs:
{ "_id" : "movie 1", "total" : 943 }
{ "_id" : "movie 2", "total" : 752 }
我怎么会去实施“外部团体”?
此外,有时上述聚集]离子返回一个空值(并非所有文档都有一个术语值)。我如何去忽略空值?
在此先感谢
谢谢!这已经解决了我的问题,我在两个组之间添加了“{$ sort:{total:-1}}”,以至于所有组合的术语都位于顶端,但我无法弄清楚如何限制术语每个类别说5个。在这些组之间添加“{$ limit:6}”不起作用。 (我试图做每个类别查询前5个术语)。谢谢! – clangers 2014-09-04 14:20:37