如何解决如何在输出中仅显示数组元素
{
_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" } }
])
,
简短的回答是您使用排除。使用 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 举报,一经查实,本站将立刻删除。