Обновление поля вложенного массива внутри другого массива в документе dongo mongo - PullRequest
0 голосов
/ 29 июня 2018

Мне просто интересно, как я могу обновить поле вложенного массива в документе dong монго.

Вот как выглядит моя схема:

const userSchema = new Schema({
  email: {type: String, unique: true, lowercase: true},
  password: String,
  firstName: String,
  lastName : String,
  role: String,
  children: Array
});

Вот как выглядит документ:

{
"_id" : ObjectId("5b3570f3150a0b57a4e7421e"),
"children" : [ 
    {
        "fullName" : "John doe",
        "yearGroup" : "4",
        "absences" : [],
        "id" : "765"
    }
],
"email" : "jdoe@gmail.com",
"firstName" : "John",
"lastName" : "Doe",
"role" : "parent",
"__v" : 1

}

Где я хочу поместить новый объект в массив 'отсутствий'.

1 Ответ

0 голосов
/ 29 июня 2018

, чтобы сделать это, вы должны использовать оператор mongodb $push через операцию update, что, я думаю, это то, что вы хотите сделать, но вы не указали свой запрос на совпадение. Чтобы нажать absences, сделайте это (я предполагаю, что запрос на совпадение children.fullName)

db.ops.update( { "children.fullName": "John doe" } , { $push: { "children.$.absences": "data to push" } } );

заполнитель $ указывает mongodb заменить его на себя (т.е. $) на индекс совпадающего массива.

, если вы хотите предотвратить дублирование элементов в поле absences, вы должны использовать оператор $addToSet

db.ops.update( { "children.fullName": "John doe" } , { $addToSet: { "children.$.absences": "data to push" } } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...