Как изменить тип поля внутри массива с большим количеством объектов в MongoDB? - PullRequest
0 голосов
/ 22 мая 2019

Я хочу изменить типы полей со строкового на UUID в MongoDB. Проблема в том, что поля хранятся в массиве (который содержит более тысячи объектов). Я нашел несколько вопросов, похожих на мой, но ни один из нихотвечает, как изменить тип, если поле присутствует в массиве в коллекции

Коллекция выглядит так:

A:1
B:1
C:1
D :
.[{a:1,
   b:1,
   c:1,
   d:1},
   {a:1,
   b:1,
   c:1,
   d:1},
   {a:1,
   b:1,
   c:1,
   d:1}
] 

Вот например, я хочу изменить тип b и d из строкиUUID.

Я попробовал решение от одного из ответов, которое выглядит следующим образом:

db.Collection.find({"D.b" : {$type: 2}}).forEach(function(x){
    x.D.b= UUID(x.D.b);
    db.Collection.save(x);
})

Я также попробовал:

db.Collection.find({"D.b" : {$type: 2}}).forEach(function(x){
    x.D.forEach(function(doc){
        doc.b= UUID(doc.b)
    })
    db.Collection.save(x);
})

Ни одно из решений не работает.

...