Как переместить элементы массива между коллекциями?
У меня есть следующая коллекция с тремя документами:
{
_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 ответа
Во-первых, вам нужно объяснить, почему вы хотите это сделать. Поскольку то, что вы хотите сделать, это просто этот оператор без добавления других операций, я думаю, что самый простой способ это сделать так:
- получить результат из БД
- делай операцию как хочешь
- удалить старую запись и сохранить измененную запись в БД
хотя идея звучит как дурак, но это полезно. если у вас есть глубокие требования, пожалуйста, дайте их нам.
Я не думаю о каких-либо конкретных операторах для операции перемещения. Но я думаю, что вы можете использовать оператор $push или $addToSet для этой операции добавления, как показано ниже, а затем удалить эти элементы из документов 1 и 2.
db.testcollection.update({_id:3}, {$addToSet:{ ... }})
Использовать update() с операцией $set
db.test1.update({_id:1},{$set:{items:['1b']}})
это обновит ваш массив.
Спасибо,