$ переименовать имена полей MongoDB, используя $ regex в mongo shell? - PullRequest
0 голосов
/ 10 декабря 2018

Я смотрел на другие вопросы, но ни один из тех, что я видел, не хочет изменять поле имен с $regex в оболочке монго.Мои попытки использовать db.collection.update с $rename и $regex не увенчались успехом.

У меня есть коллекция с такими документами:

{
    "_id" : "CWE-693",
    "Name" : "Protection Mechanism Failure",
    "Description" : "The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product.",
    "Modes_Of_Introduction" : [
        "Architecture and Design",
        "Implementation",
        "Operation"
    ],
    "Common_Consequences" : [
        "Bypass Protection Mechanism"
    ]
}

Я хочу переименовать всеимен полей (кроме «_id»), чтобы исключить подчеркивания («_»), поэтому документ выглядит следующим образом:

{
    "_id" : "CWE-693",
    "Name" : "Protection Mechanism Failure",
    "Description" : "The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product.",
    "ModesOfIntroduction" : [
        "Architecture and Design",
        "Implementation",
        "Operation"
    ],
    "CommonConsequences" : [
        "Bypass Protection Mechanism"
    ]
}

Возможно ли это с db.collection.update, с $rename и$regex?Существуют ли другие программные способы монго-оболочки для достижения этой цели?

1 Ответ

0 голосов
/ 12 декабря 2018

$rename можно использовать только с простыми строками, но не с регулярными выражениями.

Таким образом, вам придется написать код для чтения типового документа, выполнить итерации по именам полей и собрать$rename операция для выполнения.

...