mongoDB: невозможно добавить поле в объект массива - PullRequest
0 голосов
/ 30 мая 2018

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

{
    "_id" : "aN2jGuR2rSzDx87LB",
    "content" : {
        "en" : [
            {
                "content" : "Item 1",
                "timestamp" : 1518811796
            }
        ]
    }
}

Теперь мне нужно добавить еще одно поле в первый объект массива content.en.Сам документ выбирается по идентификатору.Результат должен быть:

{
  "_id" : "aN2jGuR2rSzDx87LB",
  "content" : {
    "en" : [
      {
        "content" : "Item 1",
        "timestamp" : 1518811796,
        "user" : {
          "id" : 'userId'
        }
      }
    ]
  }
}

Я пытался сделать это так, но ничего не происходит.Я даже не получаю сообщение об ошибке.

Content.update(
  { _id: id },
  {
    $addToSet: {
      'content.en.0.user': {
        id: 'userId',
      }
    }
  }
)

Также я хотел бы использовать переменную для языка.Как я могу это сделать?Что-то вроде 'content.' + language + '.0.user' ...

1 Ответ

0 голосов
/ 30 мая 2018

$ addToSet полезно, когда вы хотите добавить что-то в массив.В вашем случае вы хотите изменить первый элемент вашего массива (с индексом 0), поэтому вы должны просто использовать $ set (который является оператором обновления поля):

Content.update(
   { _id: "aN2jGuR2rSzDx87LB" },
   {
      $set: {
         "content.en.0.user": {
         id: "userId",
      }
   }
 }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...