我在使用Node.js
的{{1}}应用中使用MongoDB。
我的数据库中有一个集合,可以使用以下模式进行描述:
mongoose
其中{
id: String,
name: String,
indicators: [{
date: Date,
value: Number
}]
}
是唯一的,每个文档中都包含大量id
。
我希望能够根据indicators
数组的属性查询集合。例如:按日期对数组进行排序或限制数组中的结果数量(可能带有偏移量)。
我该怎么做?
答案 0 :(得分:1)
您可以使用$slice
限制数组中的项目数。例如:
Model.find({}, { indicators: { $slice: 5 } }, function(err, data) {
// ...
});
将返回前5个元素。
但是如果你想对它进行排序,那么你将不得不使用聚合框架:
Model.aggregate([
{ $unwind: '$indicators' },
{ $sort: { 'indicators.date': -1 } }
], function(err, data) { /* .... */ });