在mongoose中查询数组子文档

时间:2015-03-15 17:11:50

标签: node.js mongodb mongoose

我在使用Node.js的{​​{1}}应用中使用MongoDB。 我的数据库中有一个集合,可以使用以下模式进行描述:

mongoose

其中{ id: String, name: String, indicators: [{ date: Date, value: Number }] } 是唯一的,每个文档中都包含大量id

我希望能够根据indicators数组的属性查询集合。例如:按日期对数组进行排序或限制数组中的结果数量(可能带有偏移量)。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用$slice限制数组中的项目数。例如:

Model.find({}, { indicators: { $slice: 5 } }, function(err, data) {
    // ...
});

将返回前5个元素。

但是如果你想对它进行排序,那么你将不得不使用聚合框架:

Model.aggregate([
    { $unwind: '$indicators' },
    { $sort: { 'indicators.date': -1 } }
], function(err, data) { /* .... */ });