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

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')

从那里我可以迭代数组并找到我想要的内容,这并不是什么大问题。只是如果框架中已经提供了该功能,就不想重复造轮子。


如果您知道位置,可以使用“点符号”(例如'items.0')。http://docs.mongodb.org/manual/core/read-operations/#arrays - Hector Correa
我不想通过位置查找,我想通过ID查找。例如:doc.get('items').find(23); 当然这只是一个例子,说明我想要做什么。 - lostintranslation
我认为解决方案已经发布在这里 - Volox
2个回答

14
我认为它会起作用。
Document.findById({docId, 'items.id': 'yourId'}, {'items.$': 1}, function(err, item){

}

5
如果它起作用,我认为你可以将其选为被采纳的答案。谢谢。 - Leonardo
能否只获取所需字段? - Aryeh Armon
@AryehArmon 我认为您可以像处理其他查询一样包含必要的字段:{ <fieldname>: 1 }以包含字段名并排除其余部分,使用0来排除字段名。 - hoodsy
1
虽然它能工作,但是如果能得到一个解释就更好了。 - Pedro Hoehl Carvalho

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接