过滤MongoDB中的一系列嵌入式文档以进行输出

时间:2018-11-17 21:44:50

标签: mongodb aggregation-framework mongodb-compass

我有一个MongoDB书籍集合,每个书籍文档都有一系列嵌入式文档,这些文档指示可以从中购买书店。

一个例子:

title: "Honk"
author: "Person A"
stores: [
    { store: "AZ",
    URL: "http://..." },
    { store: "BW",
    URL: "http://..." },
    { store: "KO",
    URL: "http://..." } 
]

我想做的是运行一个查询/聚合,该查询/聚合基于“ store”变量返回“ stores”数组的子集。

ie:我想返回一个包含“ AZ”和“ KO”存储的结果,所以输出看起来像这样:

title: "Honk"
author: "Person A"
stores: [
    { store: "AZ",
    URL: "http://..." },
    { store: "KO",
    URL: "http://..." } 
]

到目前为止,我尝试使用$ project搜索失败,因为使用$ in仅返回第一个匹配项,因此,我收到的唯一“ Stores”值是数组中的第一个匹配项,所有其他值均被忽略。 我还尝试在聚合中使用$ filter,但这仅过滤了图书本身,而不过滤了嵌入式数组。

一段时间以来,我一直在尝试解决此问题,现在不确定问题是我如何构造数据,是否找不到正确的表达式来执行我想要的操作,或者这是一个限制。在MongoDB Compass中。

0 个答案:

没有答案