2016-04-25 2 views
0

У меня есть объект (документ) в Монго с приведенной ниже структуройОбновление позиций элементов массива в объекте MONGO

{ 
    'key1' : 'value1', 
    'key2' : 'value2', 
    'array1' : [5, 2, 10, 11] 
} 

Теперь нужно изменить array1 как [5, 10, 2, 11] путем замены 2 я и 3 я элементов массива.

Как я могу это сделать?

ответ

0

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

например. В вашем случае гораздо проще исправить индексы массивов на клиенте и сделать на сервере один запрос на обновление.

db.collection.update(
    {key1:"value1", key2:"value2"}, 
    {$set:{array1:[5,10,2,11]}} 
) 

С помощью вышеупомянутого запроса, ваш результирующий документ будет

{ 
    "_id" : ObjectId("571dfcdce6d693e88c38242f"), 
    "key1" : "value1", 
    "key2" : "value2", 
    "array1" : [ 
     5.0, 
     10.0, 
     2.0, 
     11.0 
    ] 
} 

Однако, если вы хотите сделать экспериментирование, см $position оператор

+0

Спасибо за ответ @Saleem, это решить моя проблема. Но нет ли другого способа сделать это вместо набора полного массива, просто изменив положение элемента массива и сохранив полный объект? – Dau

Смежные вопросы