Переименовать поле вложенного документа в массиве документа - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь переименовать определенное дочернее поле в массиве коллекции в 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
    }]

** Мне нужно переименовать "isrelated" «связан» ** из документа коллекции Использование mon go Версия 4.0

Я пытался:

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

Но в моем случае это не сработало

1 Ответ

0 голосов
/ 23 января 2020

Как указано в официальной документации, $ 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 = []
})
...