2016-08-23 92 views
1

我有一個蒙戈集合,其對象的結構如下:移動嵌入文檔在同父的陣列文檔蒙戈

{ 
    id: , 
    ... 
    events: [{},{},{} ...] 
    ... 
    runtime: { 
    field1: Date, 
    field2: Date, 
    field3: boolean 
    } 
} 

當某條路線查詢,我想借此FIELD1和FIELD2運行時嵌入對象並將它們作爲條目插入到事件數組中。也就是說,事件陣列的成員看起來像:

{ 
    field1: Date, 
    field2: Date 
} 

我該怎麼做?我一直在尋找push運營商,但我不確定它是否適合這項工作。

回答

1

據我瞭解,你可以做如下,

db.col.update( {_id:ID},{ $設置: {$推:{事件: { 字段1:日期, 場2:日期 }} } } )

注意

您必須使用$ set,否則更新操作將導致其他參數被刪除。然後你把'A'推到'B'那樣,那麼A是{field1:Date,field2:Date},B是事件。

編輯

使用此功能可以使用它自己的值更新文件。 。 db.col.find()快照()的forEach(函數(ELE){ db.col.update( {_id:ID},{ $設置: {$推:{事件: { FIELD1:ele.runtime.field1, 場2:ele.runtime.field2 }} } }

});

+0

是的,但如何在'push'命令知道從哪裏得到FIELD1和field2? – MadPhysicist

+0

我不是試圖推動field1和field2,而是我在飛行中創建的,而是這些字段已經在那裏了。執行路線。執行後,我想將這些字段移動或複製到事件數組中。 – MadPhysicist