我有一个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);
});
感谢任何帮助
答案 0 :(得分:0)
试试这个,根据你的问题略微修改: -
db.collection.aggregate([
{$unwind: "$trendingvalue"},
{$project: { trendingvalue: 1 }},
{$sort: {trendingvalue: -1}},
{ $limit : 10 }
]);