首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用另一个字段作为值向每个数组元素添加计算字段

使用另一个字段作为值向每个数组元素添加计算字段
EN

Stack Overflow用户
提问于 2018-10-25 14:12:38
回答 1查看 81关注 0票数 1

结构:

代码语言:javascript
复制
"entity": [
    {
        "_id": {
            "$oid": "5bbf6e6d69a634eeb5a32a0e"
        },
        "Extension Id": "PR00027173",
        "Files": [
            {
                "Locale": "en_WW",
                "FileExtension": "ai",
                "Number": []
            },
            {
                "Locale": "sv_SE",
                "Type": "Technical drawing",
                "FileExtension": "eps",
                "Number": []
            }
        ]
    },
    {
        "_id": {
            "$oid": "5bbf6e6d69a634eeb5a32b7c"
        },
        "Extension Id": "PR00027174",
        "Files": [
            {
                "Locale": "en_WW",
                "FileExtension": "ai",
                "Number": []
            },
            {
                "Locale": "sv_SE",
                "Type": "Technical drawing",
                "FileExtension": "eps",
                "Number": []
            }
        ]
    }
]

我希望在Files字段中的每个数组元素中添加计算字段(Number),并将其值设置为来自同一元素(即Type )的其他字段。我使用聚合框架进行了尝试,但每次设置值时,它都会从整个数组获取所有值,即:

代码语言:javascript
复制
"Files": [
            {
                "Locale": "en_WW",
                "FileExtension": "ai",
                "Number": [
                    "ai",
                    "eps"
                ]
            },
            {
                "Locale": "sv_SE",
                "Type": "Technical drawing",
                "FileExtension": "eps",
                "Number": [                        
                    "ai",
                    "eps"
                ]
            }
]

是否可以将新的字段号值设置为FileExtension,但只能从相同的元素而不是整个数组中设置?这就是我的总体预测结果:

代码语言:javascript
复制
  ["projection"]=> array(1) {
["Files.Number"]=>
string(29) "$Files.FileExtension"}}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-25 14:20:50

这与标准投影是不可能的,因为它是一个数组。您必须使用数组运算符$map来设置数组元素。

有点像

代码语言:javascript
复制
db.collection.aggregate([
  ...other stages..
  {"$addFields":{
      "Files":{
        "$map":{
         "input":"$Files",
         "in":{
             "Locale": "$$this.Locale",
             "FileExtension": "$$this.FileExtension",
             "Number":"$$this.FileExtension"
          }
        }
      }
   }}
])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52991446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档