Mongoose,在文档数组中查找项目

时间:2013-03-25 19:27:22

标签: node.js mongoose

所以我通过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')

从那里我可以迭代数组并找到我想要的东西,这没什么大不了的。如果在框架中提供了这个,那就不想重新发明轮子。

2 个答案:

答案 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的解决方案可以使用但涉及更多代码并且更难理解。