查找所有文档但仅在条件适用时才包含单个子文档

时间:2016-03-22 11:10:20

标签: arrays node.js mongodb mongoose

我想要返回集合中的所有文档。但是,如果 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。

0 个答案:

没有答案