是否有可能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()
。
还要注意的是,预测只是“完全”包含列表或“排除”。 你不能“混合”包含或排除