问题描述
{
_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"
}
}