【问题标题】:How to use $push in mongodb?如何在mongodb中使用$push?
【发布时间】:2015-10-14 13:15:53
【问题描述】:

大家好,我正在尝试使用 $push 将值推送到现有记录,但我收到错误说明

Invalid modifier specified: $push

我用的php下面是我的代码php代码

$collection->update(array('_id'=>3,"data._id"=>2),array('$push'=>array('userid','52'))); 
i.e adding 52 to userid. In 3 record and data._id 2 

下面是我的 mongo db 表结构

{ "_id" : 2,
  "name" : "test", 
  "data" :[{"_id" : "1",
            "file" : "nic",
            "userid" : [1,2 ]
           },
           {"_id" : "2",
            "file" : "nic1",
            "userid" : [1 ] 
           },
           {"_id" : 3,
            "file" : "nick2",
            "userid" : [1,2 ]
            } 
         ]},

{ "_id" : 3,
  "name" : "test",
  "data" : [{"_id" : "1",
             "file" : "nic",
             "userid" : [1,2 ] 
            },
            {"_id" : "2",
             "file" : "nic1",
             "userid" : [3,2 ] 
            } 
          ]}

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

    在您的更新中使用 $ 位置运算符来标识要更新的 data 数组中的元素,而无需明确指定元素的位置:

    $collection -> update(
        array('_id' => 3, "data._id" => 2),
        array('$push' =>
            array('data.$.userid' => 52)
        )
    ); 
    

    【讨论】:

    • 检查更新方法中_id的数据类型,需要与数据库中的实际数据类型相匹配。
    • 是的,我在尝试此操作时检查了它$collection->find(array('_id' => 3, "data._id" => '2')); 我能够获取值
    • 感谢帮助我修改了查询它的工作原理array('data.$.userid'=> 52)
    • 你能帮我解决这个问题吗link
    猜你喜欢
    • 2018-07-22
    • 2016-09-22
    • 2016-02-26
    • 2018-10-14
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多