所以我通过mongoose的id查询了一个特定的文档。该文档包含一系列项目。此列表将始终非常小(少于10个项目)。我想知道是否有办法从阵列中获取特定项目。
Example doc:
{
_id: 1,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
从mongoose docs我可以得到items数组:
doc.get('items')
从那里我可以迭代数组并找到我想要的东西,这没什么大不了的。如果在框架中提供了这个,那就不想重新发明轮子。
答案 0 :(得分:12)
我认为它会奏效。
Document.findById({docId, 'items.id': 'yourId'}, {'items.$': 1}, function(err, item){
}
答案 1 :(得分:2)
有一种id方法可以做到这一点。
doc.items.id(23)
http://mongoosejs.com/docs/subdocs.html
使用find或findOne的解决方案可以使用但涉及更多代码并且更难理解。