我想在我的文档中的数组中获取单个元素,而不需要获取整个数组本身。使用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
}
]
}
});
答案 0 :(得分:3)
您可以使用由mongoose提供的slice
query
功能。浏览mongoose documentation on slice以便更好地理解。
根据文件:
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
的第二个元素。