【发布时间】:2022-01-20 11:03:12
【问题描述】:
我正在从一个集合中查询一个对象,该集合具有一个包含对象数组的键。我希望它返回对象并排除数组中具有“可用:false”的元素。
例如:
{
name: "Willy's Store",
city: "Baigorria",
storeId:"666",
open: [
{day: monday, available: true},
{day: tuesday, available:true},
{day:wensday, available: true},
{day:thursday, available:false},
{day:friday, available:false}
]
}
在查询中,预期的结果应该是
{
name: "Willy's Store",
city: "Baigorria",
storeId:"666",
open: [
{day: monday, available: true},
{day: tuesday, available:true},
{day:wensday, available: true}
]
}
我只想用猫鼬来实现
【问题讨论】:
-
我认为这是与stackoverflow.com/questions/15117030/… 类似的问题,您可以使用聚合函数来匹配对象“Willy's Store”,然后使用 $unwind 访问数组值(打开)并匹配 @ 987654324@ 然后将它们与 $group 组合在一起。
-
我已经更新了我的示例,使其更加精确。使用该帖子中提出的聚合,我没有返回“城市”和“storeId”甚至“名称”,只有与“_id”匹配“available:true”条件的开放数组
-
场景使用unwind和group来放回去,建议试试。
-
是的,我做到了,它不会带回其余的数据。仅过滤后的数据。
标签: javascript node.js mongodb mongoose