2013-11-16 4 views
0

У меня есть 2 подзадачи документа и вы хотите переместить все свойства от одного к другому, но ПОСЛЕ ОБНОВЛЕНИЯ Я хочу удалить пустое свойство.Как объединить 2 подзадачи в MongoDB?

Теперь я знаю, что команда $ rename может использоваться для перемещения каждого свойства из одного места в другое, но я также хочу, чтобы пустой объект был уничтожен, но только после перемещения.

Как это сделать?

Вот пример:

{ 
    _id : ObjectID, 
    firstProperty : { 
     value0 : 1, 
     value1 : 2 
    }, 
    secondProp: { 
     value5 : 3, 
     value6 : 4 
    } 
} 

Затем после процесса:

{ 
    _id : ObjectID, 
    firstProperty : { 
     value0 : 1, 
     value1 : 2, 
     value5 : 3, 
     value6 : 4 
    } 
} 
+0

Пример до и после документов был бы действительно полезен. – JohnnyHK

+0

Сделайте это за два шага? – WiredPrairie

+0

Добавлен пример. – Discipol

ответ

0

Вот как вы можете сделать это в mongoshell, я надеюсь, что это не было бы трудно преобразовать его в узел. js, потому что это то же самое js.

Ваш документ:

{ 
    _id : 1, 
    firstProperty : { 
     value0 : 1, 
     value1 : 2 
    }, 
    secondProp: { 
     value5 : 3, 
     value6 : 4 
    } 
} 

Копирование информации из второго свойства:

var a = db.b.findOne({_id : 1},{secondProp : 1}) 

Подготовка объекта для его установки с обновлением:

var setObj = {}; 
for(var i in a.firstProperty){ 
    setObj['firstProperty.'+i] = a.secondProp[i]; 
} 

И обновление с $ набором, $ unset

db.b.update(
    {_id : 1}, 
    {$unset : {secondProp : 1}, $set : setObj } 
) 

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

  • Нет связанных вопросов^_^