使用管道操作符返回数组字段mongodb中的项



我现在正在使用类似于下面的东西,它可以工作并抓取我需要的东西:

state: { 
$filter: { 
input: "$location.address_components",
as: "address_comp",
cond: { $in: ["administrative_area_level_1", "$$address_comp.types"]}
}
},

在我的用例中,它并不总是得到保证。在这种情况下,我对countrypostal做了同样的事情,对条件进行了不同的相等性检查。然而,我留下的是我返回的文档上的state字段,这是一个最大大小为1的数组,里面有一个对象。

理想情况下,我希望该字段只是对象本身,而不是由filter操作符返回的指定对象的数组。

很难猜测您的整个聚合管道是什么样子,但我将假设您的最后阶段产生如下内容:

[
{
"_id": ObjectId("5a934e000102030405000000"),
"key1": "value1",
"state": [
{
"somekey": "dssdd"
}
]
}
]

在这种情况下,您只需要$unwindstate路径。所以,我再次假设你的最后一个阶段是$project:

{
"$project": { 
...
...
state: { 
$filter: { 
input: "$location.address_components",
as: "address_comp",
cond: { $in: ["administrative_area_level_1", "$$address_comp.types"]}
}
}
}
},
{
"$unwind": "$state"
}

结果将是:

[
{
"_id": ObjectId("5a934e000102030405000000"),
"key": 1,
"state": {
"somekey": "dssdd"
}
}
]

最新更新