MongoDB $ извлечь из массива с фильтром - PullRequest
0 голосов
/ 02 июля 2018

У меня есть коллекция пользователя:

[
  {
    _id: '5b3935c2d4850aa2d9f0ae25',
    feedBucket: [
      {
        _id: '2a3535c2d4852ba2d9f0ae52',
        createdAt: '2018-06-30 21:52:22.681'
      },
      {
        _id: '9f342c2d4852ba2d9f0ae52',
        createdAt: '2018-06-30 21:52:22.681'
      }
    ]
  },
  {
    _id: '3d2343c2d4850aa2d9f0ae33',
    feedBucket: [
      {
        _id: '2a3535c2d4852ba2d9f0ae52',
        createdAt: '2018-02-30 21:52:22.681'
      },
      {
        _id: '9f342c2d4852ba2d9f0ae52',
        createdAt: '2018-06-30 21:52:22.681'
      }
    ]
  }
]

И я пытаюсь получить документ с идентификатором - '9f342c2d4852ba2d9f0ae52' от пользователей feedBucket.

await User.updateMany(
  {},
  { $pull: { feedBucket: { _id: '9f342c2d4852ba2d9f0ae52' } } },
  { multi: true }
)

но это не работает, результат: {n: 2, nModified: 0, ok: 1}

1 Ответ

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

Если ваш feedBucket._id - ObjectId, вам нужно $pull преобразовать его в mongoose ObjectId

.
  const user = await User.update(
    { },
    { $pull: { feedBucket: { _id: mongoose.Types.ObjectId('5b07fa836569d356ba5bd2fa') } } },
    { multi: true }
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...