Как переместить элементы массива между коллекциями?

У меня есть следующая коллекция с тремя документами:

{
   _id: 1
   items: ['1a', '1b', '1c']
},
{
   _id: 2,
   items: ['2a', '2b', '2c']
},
{
   _id: 3,
   items: []
}

У меня есть запрос, который должен переместить элементы "1a", "1c", "2a", "2b" из соответствующих документов в документы с _id: 3.

Мне нужно получить следующий результат:

{
   _id: 1
   items: ['1b']
},
{
   _id: 2,
   items: ['2c']
},
{
   _id: 3,
   items: ['1a','1c', '2a', '2b']
}

Помоги мне, пожалуйста. Что является лучшим решением для решения моей проблемы?

3 ответа

Во-первых, вам нужно объяснить, почему вы хотите это сделать. Поскольку то, что вы хотите сделать, это просто этот оператор без добавления других операций, я думаю, что самый простой способ это сделать так:

  1. получить результат из БД
  2. делай операцию как хочешь
  3. удалить старую запись и сохранить измененную запись в БД

хотя идея звучит как дурак, но это полезно. если у вас есть глубокие требования, пожалуйста, дайте их нам.

Я не думаю о каких-либо конкретных операторах для операции перемещения. Но я думаю, что вы можете использовать оператор $push или $addToSet для этой операции добавления, как показано ниже, а затем удалить эти элементы из документов 1 и 2.

db.testcollection.update({_id:3}, {$addToSet:{ ... }})

Использовать update() с операцией $set

db.test1.update({_id:1},{$set:{items:['1b']}})

это обновит ваш массив.

Спасибо,

Другие вопросы по тегам