我想要返回集合中的所有文档。但是,如果 userId 匹配,我只希望子文档出现在 votes 数组中。如果它不匹配,我仍然希望返回父文档,但 votes 数组中没有任何内容。
实际文件:
[{ "_id": "...",
"user": {...},
"title": "test",
"votes": [
{"user": "56c265fda0a4335c01205551", "vote": 1},
{"user": "56c265fda0a4335c01205552", "vote": 1},
{"user": "56c265fda0a4335c01205553", "vote": 1},
{"user": "56c265fda0a4335c01205554", "vote": 1}
]}]
如果过滤器是... 5551 :(它在数组中)
[{ "_id": "...",
"user": {...},
"title": "test",
"votes": [
{"user": "56c265fda0a4335c01205551", "vote": 1}
]}]
如果过滤器是... 0000 :(它不在数组中)我想要的是什么
[{ "_id": "...",
"user": {...},
"title": "test",
"votes": [] //Empty array, but document is still returned.
}]
如果搜索值出现在数组中,我发现很多资源只包含文档,并且我可以将该值作为唯一出现的值,但如果该值不能返回所有这些值根本没有在阵列中找到。
如何返回所有父文档,然后过滤投票数组,这样只返回一个匹配元素?
注意:我的问题与Retrieve only the queried element in an object array in MongoDB collection非常相似,但具体是在Mongoose中实现,而不是MongoDB。