Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mongodb中修改完整数组?_Php_Arrays_Mongodb_Updates - Fatal编程技术网

Php 如何在mongodb中修改完整数组?

Php 如何在mongodb中修改完整数组?,php,arrays,mongodb,updates,Php,Arrays,Mongodb,Updates,我对mongodb有点陌生,我正在尝试做一些我真的不知道是否可以在mongodb中完成的事情,我尝试了不同的方式,甚至我可以按照我搜索的方式去做,但没有找到一个可以帮助我解决我的问题的答案 这就是我来这里的原因,来解释我的情况,看看是否有人能帮助我,下面是一个场景: 我有一个Mongo Json结构: { "_id" : ObjectId("52b5e332808ab2f802000082"), "DocumentoBG" : [ { "elemento" : "ACT

我对mongodb有点陌生,我正在尝试做一些我真的不知道是否可以在mongodb中完成的事情,我尝试了不同的方式,甚至我可以按照我搜索的方式去做,但没有找到一个可以帮助我解决我的问题的答案

这就是我来这里的原因,来解释我的情况,看看是否有人能帮助我,下面是一个场景:

我有一个Mongo 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'
        } 
 } 
})

我得到了我想要修改的文档,但我不能使用该代码来修改该文档,我想看看是否通过某种方式传递了修改过的数组,可以替换当前文档,所以在发送时,我想看看是否有任何方法来完成此操作,我只是想知道是否有办法用所有字段更新整个数组或文档,传递整个结构。

我不太确定我是否理解你的要求,但听起来你想用新元素替换数组元素,其中
id\u documento=='28224'
。为此,您可以与
$set
运算符一起使用,该运算符使用
$
标识要替换为查询中匹配的
DocumentoBG
数组元素的索引:

db.DocumentosBG.update({
_id:ObjectId(“52b5e332808ab2f802000082”),
“DocumentoBG.id_documento”:“28224”
}, {
$set:{
“DocumentoBG.$”:{
“elemento”:“CAJA”,
“id_documento”:“28224”,
“id_empresa”:“28”,
“奥登”:“2”,
“SOP”:“10488.5”,
“3T”:“0”,
“BORA Y AMIGOS”:“modify1”,
“ARP”:“0”,
“OPBR”:“修改2”,
“OPC”:“48396.37”,
“LOS FAROLES”:“0”,
“BAR PACIFICO”:“modify3”,
“Entertenimiento”:“0”,
“总计”:“58884.87”
}
}
})