【问题标题】:Return dictionary from mongodb, merge two fields values into single field as key value pairs?从mongodb返回字典,将两个字段值合并为单个字段作为键值对?
【发布时间】:2019-12-29 16:10:17
【问题描述】:

尝试将两个字段值合并为单个字段作为键值对。

示例文件:

{
    "_id":  ObjectId(""),
    "id":   "23",
    "name": "MyName"
}, 
    "_id":  ObjectId(""),
    "id":   "24",
    "name": "MyName2"
}

在这种情况下,我希望输出为:{"23": "MyName", "24": "MyName2"} 是否可以仅使用 mongo 而不是编程语言来迭代和处理数据。

【问题讨论】:

    标签: mongodb pymongo


    【解决方案1】:

    试试这个:

    查询:

    db.yourCollectionName.aggregate([{ $project: { _id: 0, idNameAsArray: { $split: [{ $concat: ["$id", ",", "$name"] }, ','] } } },
    { $group: { _id: '', arrayOfIdNameArrays: { $push: '$idNameAsArray' } } },
    { $project: { idNameObjs: { $arrayToObject: "$arrayOfIdNameArrays" } } },
    { $replaceRoot: { newRoot: '$idNameObjs' } }])
    

    收集数据:

    /* 1 */
    {
        "_id" : ObjectId("5e085452d3b84db1053c3c6e"),
        "id" : "23",
        "name" : "MyName"
    }
    
    /* 2 */
    {
        "_id" : ObjectId("5e085452d3b84db1053c3c6f"),
        "id" : "24",
        "name" : "MyName2"
    }
    

    结果:

    /* 1 */
    {
        "23" : "MyName",
        "24" : "MyName2"
    }
    

    参考: Aggregation-pipeline-operators

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多