我需要一种方法来减少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。
答案 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 */)