如何在mongoose中获取所有匹配的子文档?

时间:2015-08-29 22:36:08

标签: mongodb mongoose

在我的mongodb中(使用Mongoose),我有故事集合,其中包含注释子集合,我想按客户端ID查询子文档,如

Story.find({ 'comments.client': id }, { title: 1, 'comments.$': 1 }, function (err, stories) {
    ...
    })
})

查询有效,只是它只返回第一个匹配的子文档,但我希望它返回所有匹配的子文档。我错过了一个选项吗?

修改

在Blakes Seven的小费中,我尝试了Retrieve only the queried element in an object array in MongoDB collection的答案,但我无法使其发挥作用。

首先尝试了这个:

Story.find({'comments.client': id}, { title: 1, comments: {$elemMatch: { client: id } } }, function (err, stories) {

})

它也只返回第一场比赛。

然后,我尝试了那里接受的答案:

Story.aggregate({$match: {'comments.client': id} }, {$unwind: '$comments'}, {$match : {'comments.client': id} }, function (err, stories) {

})

但这没有任何回报。这有什么不对?

更新

我的数据结构如下:

{
    "_id" : ObjectId("55e2185288fee5a433ceabf5"),
    "title" : "test",
    "comments" : [ 
        {
            "_id" : ObjectId("55e2184e88fee5a433ceaaf5"),
            "client" : ObjectId("55e218446033de4e7db3f2a4"),
            "time" : ISODate("2015-08-29T20:16:00.000Z")
        }
    ]
}

0 个答案:

没有答案