如何在 MongoDB 中使用数组嵌套过滤器获取特定字段值?
How can I get specific field value with array nested filter in MongoDB?
过滤嵌套数组值后,我添加了“$project”查询以选择特定字段。
我想获取嵌套数组外的“new_yn”字段值,但我只获取了 id 和嵌套数组值。
如何修复我的查询?你能给我一些指导吗?
(Mongo数据库版本为 5.0.6 社区)
[查询]
db.collection.aggregate([
{
$match: {
"new_yn": "Y",
"port_info": {
$elemMatch: {
"port_code": "http_https"
}
}
}
},
{
$project: {
port_info: {
$filter: {
input: "$port_info",
as: "item",
cond: {
$eq: [
"$$item.port_code",
"http_https"
]
}
}
}
}
},
{
"$project": {
"_id": 1,
"new_yn": 1,
"port_info.ip_port": 1
}
}
])
[Mongo游乐场]
这是因为您没有将它包含在第一个 $project
阶段。
只需将 new_yn:1
添加到第一个项目阶段即可。
db.collection.aggregate([
{
$match: {
"new_yn": "Y",
"port_info": {
$elemMatch: {
"port_code": "http_https"
}
}
}
},
{
$project: {
new_yn: 1,
port_info: {
$filter: {
input: "$port_info",
as: "item",
cond: {
$eq: [
"$$item.port_code",
"http_https"
]
}
}
}
}
},
{
"$project": {
"_id": 1,
"new_yn": 1,
"port_info.ip_port": 1
}
}
])
与 , you can use $set
一样,但它会带来该文档中的所有其他字段,我相信您不需要。
过滤嵌套数组值后,我添加了“$project”查询以选择特定字段。
我想获取嵌套数组外的“new_yn”字段值,但我只获取了 id 和嵌套数组值。
如何修复我的查询?你能给我一些指导吗? (Mongo数据库版本为 5.0.6 社区)
[查询]
db.collection.aggregate([
{
$match: {
"new_yn": "Y",
"port_info": {
$elemMatch: {
"port_code": "http_https"
}
}
}
},
{
$project: {
port_info: {
$filter: {
input: "$port_info",
as: "item",
cond: {
$eq: [
"$$item.port_code",
"http_https"
]
}
}
}
}
},
{
"$project": {
"_id": 1,
"new_yn": 1,
"port_info.ip_port": 1
}
}
])
[Mongo游乐场]
这是因为您没有将它包含在第一个 $project
阶段。
只需将 new_yn:1
添加到第一个项目阶段即可。
db.collection.aggregate([
{
$match: {
"new_yn": "Y",
"port_info": {
$elemMatch: {
"port_code": "http_https"
}
}
}
},
{
$project: {
new_yn: 1,
port_info: {
$filter: {
input: "$port_info",
as: "item",
cond: {
$eq: [
"$$item.port_code",
"http_https"
]
}
}
}
}
},
{
"$project": {
"_id": 1,
"new_yn": 1,
"port_info.ip_port": 1
}
}
])
与 $set
一样,但它会带来该文档中的所有其他字段,我相信您不需要。