4

所以我从mongoose通过id查询了一个特定的文档。该文档有一系列项目。此列表将始终非常小(少于 10 项)。我想知道是否有办法从数组中获取特定项目。

示例文档:

{
    _id: 1,
    name: 'some name,
    items: [{
        id: 23,
        name: 'item name 23'
    },{
        id: 24,
        name: 'item name 24'
    }]
}

从 mongoose 文档我可以得到 items 数组:

doc.get('items')

从那里我可以遍历数组并找到我想要的,这没什么大不了的。如果框架中提供了这一点,只是不想重新发明轮子。

4

2 回答 2

14

我认为它会起作用。

Document.findById({docId, 'items.id': 'yourId'}, {'items.$': 1}, function(err, item){

}
于 2014-05-10T06:32:39.593 回答
2

有一个 id 方法可以做到这一点。

doc.items.id(23)

http://mongoosejs.com/docs/subdocs.html

使用 find 或 findOne 的解决方案将起作用,但涉及更多代码并且更难理解。

于 2015-01-28T12:46:13.173 回答