前N个趋势数

时间:2017-12-12 06:28:01

标签: mongodb

我有一个100的数据集。出于这个,我必须显示前10名帖子。我的数据集如下所示:

{
    "_id" : ObjectId("5a2e581775549510d8e5ee07"),
    "post" : "1",
    "trendingvalue" :50,
    "lastmodified" : ISODate("2017-12-11T10:04:07.526Z"),
    "createdate" : ISODate("2017-12-11T10:04:07.526Z"),
    "__v" : 0
},
{
    "_id" : ObjectId("5a2e581775549510d8e5ee08"),
    "post" : "2",
    "trendingvalue" :40,
    "lastmodified" : ISODate("2017-12-11T10:04:07.526Z"),
    "createdate" : ISODate("2017-12-11T10:04:07.526Z"),
    "__v" : 0
},
{
    "_id" : ObjectId("5a2e581775549510d8e5ee09"),
    "post" : "3",
    "trendingvalue" :21,
    "lastmodified" : ISODate("2017-12-11T10:04:07.526Z"),
    "createdate" : ISODate("2017-12-11T10:04:07.526Z"),
    "__v" : 0
},
{
    "_id" : ObjectId("5a2e581775549510d8e5ee01"),
    "post" : "4",
    "trendingvalue" :45,
    "lastmodified" : ISODate("2017-12-11T10:04:07.526Z"),
    "createdate" : ISODate("2017-12-11T10:04:07.526Z"),
    "__v" : 0
},and so on upto 100.

现在,我怎样才能做到这一点?我正在尝试实现查询但是没有得到所需的结果。

{"_id" :5a2e581775549510d8e5ee07, "value": 50},
{"_id" :5a2e581775549510d8e5ee01, "value": 45},
{"_id" :5a2e581775549510d8e5ee08, "value": 40},
{"_id" :5a2e581775549510d8e5ee09, "value": 21}

我的查询是这样的:

db.collection.aggregate([
    {$unwind: "$trendingvalue"},
    //{$sort: {"trendingdelta": -1}},
    {$group: {"_id": "$_id", "value": "$trendingdelta"}},
    //{$project: {"trendingdelta": "$trendingdelta"}}
    ], function(error, data){
        console.log(data);
    });

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

试试这个,根据你的问题略微修改: -

db.collection.aggregate([
    {$unwind: "$trendingvalue"},
    {$project: { trendingvalue: 1 }},
    {$sort: {trendingvalue: -1}},
    { $limit : 10 }
    ]);