在我的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")
}
]
}