重命名文档数组中的子文档字段

时间:2020-01-23 12:51:26

标签: database mongodb nosql robo3t

我正在尝试重命名MONGODB中集合数组内的特定子字段

{
"_id" : Id("248NSAJKH258"),
"isGoogled" : true,
"toCrawled" : true,
"result" : [ 
    {
        "resultsId" : 1,
        "title" : "Text Data to be writen",
        "googleRanking" : 1,
        "isrelated" : false
    }, 
    {
        "resultId" : 2,
        "title" : "Text Data",
        "googleRanking" : 2,
        "isrelated" : true
    }]

**我需要从收集文档中将“相关”重命名为“相关” ** 使用mongo版本4.0

我尝试过:

db.collection_name.update({}, { $rename: { 'result.isrelated': 'result.related'} } )

但是对于我而言,它不起作用

1 个答案:

答案 0 :(得分:0)

如官方文档$ rename所述,不适用于数组。 请检查以下链接: https://docs.mongodb.com/manual/reference/operator/update/rename/

但是你可以做这样的事情

let newResult = [];

db.aa1.find({}).forEach(doc => {
    for (let i in doc.result) {
        newResult.push({
            "resultsId" : doc.result[i]['resultsId'],
            "title" : doc.result[i]['title'],
            "googleRanking" : doc.result[i]['googleRanking'],
            "related" : doc.result[i]['isrelated'],
        })
    }

    db.aa1.updateOne({_id: doc._id}, {$set: {result: newResult}});
    newResult = []
})