Обновить строку до ObjectId детей в Mongodb - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть коллекция с именем "users", в которой есть массив с именем "companies".Это означает, что каждый «пользователь» может иметь одну или несколько «компаний».Один документ выглядит следующим образом.

{
"_id" : ObjectId("5b0b5aed0902a519d0440b37"),
"email" : "mario@example.com",
"name" : "Mario",
"last_name" : "Perez",
"companies" : [ 
    {
        "id" : "5b0b456bf7a87830b4d20058",
        "name" : "COMPANY A"
    }, 
    {
        "id" : "5b0b755b576ac70014ad441c",
            "name" : "COMPANY B"
        }
    ]
}

Я хочу преобразовать все companies.id (строку) в ObjectId.

Итак, я сделал это обновление, но оно на самом деле не работает.Я думаю, что есть проблема с тем, как я пытаюсь преобразовать строку (companies.id) в ObjectId.

db.getCollection('users').update({ "_id": ObjectId("5b0b5aed0902a519d0440b37") }, {$set: {"companies.$[].id": ObjectId("companies.$[].id")}}, {multi: true})

Буду признателен, если вы поможете мне.

1 Ответ

0 голосов
/ 13 сентября 2018

Хорошо, попробовав разные способы, я получил ответ!

db.getCollection('users').find({ "_id": ObjectId("5b0b5aed0902a519d0440b37") }).forEach(function (x) {
x.companies.forEach(function (y) {
    var id_object = new ObjectId(y.id);
    db.getCollection('users').update(x,{$set: {"companies.$[].id": id_object}});
});

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...