$ limit如何与mongodb中的$ group一起使用

时间:2014-07-18 08:43:36

标签: node.js mongodb

我在信息表中有几条记录。对于参与其中的几个用户,infoId可以是常见的。信息收集看起来像:

{
_id:ObjectId(),
infoId:001,
userName:x,
designation:xx,
year:10
},
{
_id:ObjectId(),
infoId:001,
userName:a,
designation:aa,
year:10
},
{
_id:ObjectId(),
infoId:001,
userName:y,
designation:yy,
year:3
},
{
_id:ObjectId(),
infoId:002,
userName:x,
designation:xx,
year:7
},
{
_id:ObjectId(),
infoId:003,
userName:x,
designation:xx,
year:10
},
{
_id:ObjectId(),
infoId:001,
userName:c,
designation:cc,
year:10
}....

从信息表中,我想根据分组infoId获取记录。所以我可以使用聚合查询来获得这个。

db.information.aggregate([$group:{_id:$infoId,users:{$push:"$$ROOT"},$sort:{infoId:-1}]);

我会得到如下结果:

[{
_id:003,
users:[
    {
    _id:ObjectId(),
    infoId:003,
    userName:x,
    designation:xx,
    year:10
    }]
},
{
 _id:002,
 users:[{
    _id:ObjectId(),
    infoId:002,
    userName:x,
    designation:xx,
    year:7
    }]
},
{
  _id:001,users:[
    {
    _id:ObjectId(),
    infoId:001,
    userName:x,
    designation:xx,
    year:10
    },
    {
    _id:ObjectId(),
    infoId:001,
    userName:a,
    designation:aa,
    year:10
    },
    {
    _id:ObjectId(),
    infoId:001,
    userName:y,
    designation:yy,
    year:3
    },
    {
    _id:ObjectId(),
    infoId:001,
    userName:c,
    designation:cc,
    year:10
    }

]}

}]

但是在这里说我希望以这样的方式给予一些限制,它只需要检索到它。

如果我将说限制为4,那么它需要返回_id:003,_id:002,在_id:001中只有两个。 注意:分组后的任何指定都不应该是结果。

那么如何在mongodb中查询?

0 个答案:

没有答案