我将数据文件从外部源导入到我的数据库中。此数据在嵌套对象的数组中具有嵌套对象。示例:
{
"_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‘和'type’值。如果没有数组或嵌套文档,我知道如何使用聚合返回结果。
db.users.aggregate(
{ $project : {
_id : 0 ,
id : 1 ,
type : 1
}})我想我需要使用$unwind,但我的大脑却在弯曲。如何更新聚合操作以投影所需的字段?
发布于 2017-10-11 20:30:26
使用$map转换嵌入式数组。
有点像
db.users.aggregate({
"$addFields": {
"_embedded.identification": {
"$map": {
"input": "$_embedded.identification",
"as": "result",
"in": {
"id": "$$result.id",
"type": "$$result.type"
}
}
}
}
})https://stackoverflow.com/questions/46696907
复制相似问题