установить динамические ключи при обновлении mongodb - PullRequest
0 голосов
/ 30 июня 2018

У меня есть mongoDB companies коллекция

c00:
    {
        _id: c00,
        name: 'acme',
        results: [
            0: { _id: 'a10', name: 'foo', visible: true },
            1: { _id: 'a11', name: 'bar', visible: false }
        ],
    },
c01:
    {
        _id: c01,
        name: 'apra'
        results: [
            0: { _id: 'b10', name: 'foo', visible: false },
            1: { _id: 'b11', name: 'bar', visible: true },
            2: { _id: 'b12', name: 'qux', visible: true },
        ]
    }
}

Мне нужен запрос, который изменяет

company.c01.results с resultId === 'b11'`

до

{ _id: 'b11', name: 'bar', visible: false }

Я пытался

  CompanyModel
    .update(
      { [`${companyId}.results`]: resultsId },
      {
        $set: { ['results.$.visible']: false },
      }
    )

но это не сработало.
Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вам нужно поставить динамический ключ также во время $set

CompanyModel.update(
  { [`${companyId}.results._id`]: resultsId },
  { $set: { [`${companyId}.results.$.visible`]: false }}
)
0 голосов
/ 30 июня 2018

Попробуйте

CompanyModel.update(
    { "company.c01.sets._id": "b11" }, 
    { "$set": { "company.$.c01.visible": false } }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...