Mongoose只从文档的嵌套数组中返回一个元素
我想在我的文档中的数组中获取单个元素,而无需获取整个数组本身。 有可能做到使用mongoose?
我试过使用dot.notation,但它似乎并没有工作 – 它只是提取空的嵌套对象后,“索引点”
// Here I'd like to get // The first undo-ed item from the first board within my `boardBucket` Room.findOne({name: this.name}, `boardBucket.items.0.undoedItems.1`, (err, result)=> { if (err) throw err; console.log(JSON.stringify(result, null, 4)); })
有没有办法做到这一点?
我想避免提取整个数组的原因
- 我的对象非常大,如果我把它们全部取回,会导致内存问题
- 然而,一个人看着它是无效的。
这是我的Schema
以防止它有帮助:
var roomSchema = new mongoose.Schema({ name: String, boardBucket: { currentBoardId: String, items: [ { boardId: String, boardItems: Array, undoedItems: Array, // <- Need to get a *single* element from this array viewPosition: String } ] } });
你可以使用mongoose提供的query
slice
function。 为了更好的理解,请阅读切片上的mongoose文档 。
根据文件:
slice([path], val)
为一个数组指定一个$ slice投影。
参数:
[path] <String> val <Number> number/range of elements to slice
试试这个为你的问题,我希望它的作品:
Room.findOne({name: this.name}) .slice('boardBucket.items', 1) .slice('boardBucket.items.undoedItems', [1,1]) .exec()
这将返回items
数组的第一个元素,以及第二个undoedItems
。