微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在输出中仅显示数组元素

如何解决如何在输出中仅显示数组元素

我有这样的文件。如何在输出中仅显示数组元素。

{
_id: ObjectId("5effaa5662679b5af2c58829"),email: “email@example.com”,name: {given: “Jesse”,family: “Xiao”},age: 31,addresses: [{label: “home”,street: “101 Elm Street”,city: “Springfield”,state: “CA”,zip: “90000”,country: “US”},{label: “mom”,street: “555 Main Street”,city: “Jonestown”,province: “Ontario”,country: “CA”}]
}

我的查询

{ "$project": { _id : 0,"addresses.country": 1 }  }

期望输出

"country": “...”

实际输出

{ 
    "addresses" : [
        {
            "country" : "..."
        }
    ]
}

解决方法

您可以使用聚合

  • $unwind 解构数组
  • $match 匹配国家/地区
  • $replaceRoot 使其成为根目录

这是代码

db.collection.aggregate([
  { "$unwind": "$addresses" },{ "$match": { "addresses.country": "CA" } },{ "$replaceRoot": { "newRoot": "$addresses" } }
])

工作Mongo playground

,

简短的回答是您使用排除。使用 field:0 排除。所以在 find 语句之后你会添加如下内容:db.project.find({..},{_id:0:,label:0,city:0..etc})

,

解决了

        { "$unwind" : "$addresses" },{
            "$project" : {
                _id:0.0,"addresses" : "$addresses._id"
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。