Nik*_*des 2 mongoose mongodb node.js
我想在我的文档中获取一个数组中的单个元素,而不是获取整个数组本身。使用猫鼬可以这样做吗?
我试过使用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));
})
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标?
这是我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
}
]
}
});
Run Code Online (Sandbox Code Playgroud)
您可以使用slicemongoosequery提供的功能。阅读有关切片的猫鼬文档以更好地理解。
根据文档:
Run Code Online (Sandbox Code Playgroud)slice([path], val)指定数组的 $slice 投影。
参数:
Run Code Online (Sandbox Code Playgroud)[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()
Run Code Online (Sandbox Code Playgroud)
这将返回items数组的第一个元素,以及undoedItems.
| 归档时间: |
|
| 查看次数: |
3894 次 |
| 最近记录: |