我有一个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中。