我使用MongoDB Compass进行查询,同时搜索我继承的大量数据,并且经常被要求为各个团队生成数据报告,但文档中的数据太多,他们无法轻松解析,因此我希望尽可能减少报告的数据
我有以下示例文档
{
"_id": "123456",
"name": "Bob",
"date": "2022-07-01",
"fruit": [
{
"_id": "000001",
"foodName": "apple",
"colour": "red"
},
{
"_id": "000002",
"foodName": "apple",
"colour": "green"
},
{
"_id": "000003",
"foodName": "banana",
"colour": "yellow"
},
{
"_id": "000004",
"foodName": "orange",
"colour": "orange"
}
]
}
使用db.people.find( { "fruit.foodName" : "apple" } )
返回整个文档
我想只搜索苹果,这样我得到的结果是:
{
"_id": "123456",
"name": "Bob",
"date": "2022-07-01",
"fruit": [
{
"_id": "000001",
"foodName": "apple",
"colour": "red"
},
{
"_id": "000002",
"foodName": "apple",
"colour": "green"
}
]
}
这可能吗?
1条答案
按热度按时间efzxgjgh1#
您将需要为此使用聚合并使用$filter操作符。您不能为此使用查询语言的原因是它们的投影选项有限,并且只允许投影单个数组元素,因为在您的情况下,数组可以包含多个匹配的子文档,它不会这样做。
您可以阅读有关查询语言投影的更多信息here
Mongo Playground