有效减少mongoose上mongo数组子文档长度的方法

时间:2016-03-11 14:27:17

标签: node.js mongodb mongoose projection

我需要一种方法来减少mongoose上的mongo子文档的长度。

我有这样的架构:

var schema = new Schema({
    field1: {
        type: String
    },
    subdocuments: {
        prop1: [{x:String,y:Number}],
        prop2: [{x:String,y:Number}]
    }
});

然后我使用来自使用此模式的模型中的find来传递投影字段。

问题是prop1和prop2是非常大的数组(大约1000个元素)所以我只需要按y排序的前n个。

您是否知道只获取我需要的子文档的有效方法?

使用聚合函数可能更好吗?在这种情况下,投影如何才能获得我真正需要的字段?

非常感谢提前。 d。

2 个答案:

答案 0 :(得分:1)

请尝试通过aggregation执行此操作,在展开{{1}后,将prop1数组与prop2数组连接到prop数组到$concatArrays数组,按prop值排序,最后y第一个$limit元素。

n

答案 1 :(得分:0)

尝试这样的事情:

model.find({/* query */})
  .slice('subdocuments.prop1', [/* skip */, /* limit */])
  .exec(/*callback*/);

model.find({/* query */})
  .where('subdocuments.prop1').slice(/* limit */)

猫鼬切片:http://mongoosejs.com/docs/api.html#query_Query-slice