有一个架构:
{model.js}
var someSchema = new mongoose.Schema({
a : [Number],
b : String,
c : [Number],
d : Number
});
我尝试查找()每个文档,并仅从a中选择一个元素,从c中选择具有相同索引和b的元素。
那就是我尝试过的:
{get.js}
var some = require('model');
some.find() // find
.limit(3) // limit for 3 docs (test part)
// NEXT LINE IS NOT WORKING
.select('a.0 b c.0 -d') // select {array: a and b, index:0}, b less d
.exec(function(err, dataList) {
if (err) {
console.warn(err);
return ;
}
console.log(data[0].a); // Show in console array a
console.log(data[0].b); // String b
console.log(data[0].c); // array c
// not select d, so d = undefined
});
在这部分代码中,我将能够选择一个数组的索引,但是当我尝试该代码时,我的数组被选中了,但是里面没有任何元素。
有没有办法从架构中选择数组的索引?
您想$slice
在这里:
some.find()
.limit(3)
.select({
"a": { "$slice": 1 },
"b": 1,
"c": { "$slice": 1 }
})
.exec(function(err,dataList) {
对于第一个元素,您只需要返回数字,否则只需按索引位置,然后再返回数字。因此,对于第二个索引,它将是:
some.find()
.limit(3)
.select({
"a": { "$slice": [1,1] },
"b": 1,
"c": { "$slice": [1,1] }
})
.exec(function(err,dataList) {
这就要求将“完整对象”形式的投影提供给该.select()
语句,或者以其他方式提供给的投影参数.find()
。
还要注意,投影要么是“全部”包含列表,要么仅仅是“排除”。您不能“混合”包含或排除
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句