【发布时间】:2020-10-30 06:31:32
【问题描述】:
我正在尝试创建一个投影,我可以在其中仅获取 Array 元素的一部分。
以本文档为模型:
{
"city_info": {
"name": "First City"
"initials": "FC"
},
"postal_codes": {
"ranges": [
{
"name": "Range 1",
"details": "More details",
"another_object": {
(...)
},
"codes": [
{"code": 1},
{"code": 2},
{"code": 3}
]
},
{
"name": "Range 2",
"details": "More details 2",
"another_object": {
(...)
}
"codes": [
{"code": 4},
{"code": 5}
]
}
]
}
}
我的查询看起来像{"postal_codes.ranges.codes.code": 3}
范围和代码可以包含数百个元素。 "another_object" 只是一个占位符,例如。
预期回报如下:
{
"city_info": {
"name": "First City"
"initials": "FC"
},
"range": {
"name": "Range 1",
"details": "More details",
"another_object": {
(...)
}
}
}
简而言之,我也需要获取与查询匹配的数组元素,但不要完全返回。
似乎 find 不够强大,我需要某种聚合。我尝试使用匹配来仅返回与查询匹配的文档,但我不知道如何仅投影数组的一部分。
【问题讨论】:
-
您的 JSON 结构无效。
"codes": [ "code": 4, "code": 5 ]应该是"codes": [{ "code": 4, "code": 5 }]。不是吗? -
注意到了,我用代码将它固定到一个对象数组中。
标签: mongodb aggregation-framework