是否有可能select查询select和他的索引数组中的元素?

有一个Schema:

{model.js} var someSchema = new mongoose.Schema({ a : [Number], b : String, c : [Number], d : Number }); 

我试图find()每个文件,并select只有一个元素从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 }); 

在这部分代码中,我将能够select这样一个数组的索引,但是当我尝试这个代码时,我的数组被选中,但没有内部元素。

有没有办法从架构中select一个数组的索引?

你想在这里$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) { 

这要求投影的“完整对象”forms被提供给.select()语句,否则作为投影参数提供给.find()

还要注意的是,预测只是“完全”包含列表或“排除”。 你不能“混合”包含或排除