2013-12-21 27 views
0

嗯,我有點兒mongodb新,以及我想做的事情,我真的不知道如果可以在mognodb,我已經嘗試了不同的方式,甚至我可以做,因爲我搜索,但沒有找到一個可以幫助我解決問題的答案。如何修改mongodb中的完整數組?

這就是爲什麼我來到這裏,說明我的情況,看看是否有人能幫助我,以及這裏是情景:

嗯,我有這個蒙戈JSON結構:

{ 
"_id" : ObjectId("52b5e332808ab2f802000082"), 
"DocumentoBG" : [ 
    { 
     "elemento" : "ACTIVO CIRCULANTE", 
     "id_documento" : "28223", 
     "id_empresa" : "28", 
     "orden" : "1", 
     "SOP" : "0", 
     "3T" : "0", 
     "BORA Y AMIGOS" : "0", 
     "ARP" : "0", 
     "OPBR" : "0", 
     "OPC" : "0", 
     "LOS FAROLES" : "0", 
     "BAR PACIFICO" : "0", 
     "ENTRETENIMIENTO" : "0", 
     "Total" : "0" 
    }, 
    { 
     "elemento" : "CAJA", 
     "id_documento" : "28224", 
     "id_empresa" : "28", 
     "orden" : "2", 
     "SOP" : "10488.5", 
     "3T" : "0", 
     "BORA Y AMIGOS" : "0", 
     "ARP" : "0", 
     "OPBR" : "0", 
     "OPC" : "48396.37", 
     "LOS FAROLES" : "0", 
     "BAR PACIFICO" : "0", 
     "ENTRETENIMIENTO" : "0", 
     "Total" : "58884.87" 
    }, 
    { 
     "elemento" : "FONDO FIJO", 
     "id_documento" : "28225", 
     "id_empresa" : "28", 
     "orden" : "3", 
     "SOP" : "10488.5", 
     "3T" : "0", 
     "BORA Y AMIGOS" : "0", 
     "ARP" : "0", 
     "OPBR" : "0", 
     "OPC" : "48396.37", 
     "LOS FAROLES" : "0", 
     "BAR PACIFICO" : "0", 
     "ENTRETENIMIENTO" : "0", 
     "Total" : "58884.87" 
    } 
], 
"total" : 3 
} 

,我會要修改的整個陣列,驗證爲id_empresa,這是陣列改性,我要添加:

{ 
"elemento" : "CAJA", 
"id_documento" : "28224", 
"id_empresa" : "28", 
"orden" : "2", 
"SOP" : "10488.5", 
"3T" : "0", 
"BORA Y AMIGOS" : "modify1", 
"ARP" : "0", 
"OPBR" : "modify2", 
"OPC" : "48396.37", 
"LOS FAROLES" : "0", 
"BAR PACIFICO" : "modify3", 
"ENTRETENIMIENTO" : "0", 
"Total" : "58884.87" 
} 

,如果我的mongodb上運行此代碼:

db.DocumentosBG.find 
({ 
    _id: ObjectId("52b5e332808ab2f802000082"),  
}, 
{ 
    'DocumentoBG': 
    { 
     '$elemMatch': 
     { 
      'id_documento': '28224' 
     } 
} 
}) 

我得到正是我想要修改的文件,但我不能使用代碼來修改該文件,我想看看,如果通過某種方式修改了陣列,可以取代當前文檔,從而爲我發送,我想看看是否有任何方法來完成這一點,我只想知道是否有辦法更新整個數組或文件的所有領域,傳遞整個結構。

回答

0

我不太清楚,如果我明白你在問什麼,但它聽起來像你正在尋找替換你的新元素的id_documento == '28224'陣列元素。要做到這一點,您可以使用update與使用$身份的DocumentoBG數組元素的索引,以取代作爲一個查詢相匹配的$set操作:

db.DocumentosBG.update({ 
    _id: ObjectId("52b5e332808ab2f802000082"), 
    'DocumentoBG.id_documento': '28224' 
}, { 
    $set: { 
    'DocumentoBG.$': { 
     "elemento" : "CAJA", 
     "id_documento" : "28224", 
     "id_empresa" : "28", 
     "orden" : "2", 
     "SOP" : "10488.5", 
     "3T" : "0", 
     "BORA Y AMIGOS" : "modify1", 
     "ARP" : "0", 
     "OPBR" : "modify2", 
     "OPC" : "48396.37", 
     "LOS FAROLES" : "0", 
     "BAR PACIFICO" : "modify3", 
     "ENTRETENIMIENTO" : "0", 
     "Total" : "58884.87" 
    } 
    } 
}) 
+0

這就是我一直在尋找,謝謝你你的答案。 – mattlink03