2013-12-21 25 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