我将数据文件从外部源导入我的数据库。此数据在嵌套对象的数组中嵌套了对象。例如:
{
"_id" : ObjectId("59de680a8a042e19b4ac4895"),
"_embedded" : {
"identification" : [
{
"name" : "Bill Brasky",
"id" : "brasky9z5",
"type" : "Client"
},
{
"name" : "Merle Haggard",
"id" : "mh2017",
"type" : "Vendor"
},
{
"name" : "Captain American",
"id" : "1a1a1a1",
"type" : "Client"
}
]
}}
我想使用汇总操作只查看' id'和'键入'值。我知道如果没有数组或嵌套文档,如何使用聚合返回结果。
db.users.aggregate(
{ $project : {
_id : 0 ,
id : 1 ,
type : 1
}})
我想我需要使用$ unwind但是我的大脑正在蜿蜒曲折。如何更新我的聚合操作以投影我的必填字段?
答案 0 :(得分:0)
使用$map
转换嵌入式数组。
像
这样的东西db.users.aggregate({
"$addFields": {
"_embedded.identification": {
"$map": {
"input": "$_embedded.identification",
"as": "result",
"in": {
"id": "$$result.id",
"type": "$$result.type"
}
}
}
}
})