位置运算符'$'在Mongo PHP 5.5中不起作用

时间:2016-05-10 12:32:49

标签: php mongodb

这里我需要在MongoDB中已经有一条现有记录的地方插入另一个数组数据。

示例

db中已存在记录:

{
    "_id" : 1,
    "name" : "main",
    "sample_details" : [ 
        {
            "detail_no" : 1,
            "email" : "test@gmail.com",
            "name" : "test",
        }, 
        {
            "detail_no" : 2,
            "email" : "test12@gmail.com",
            "name" : "test12",
        }
    ],
}

假设我需要在“sample_details”中再插入一个数组数据。这是我的代码,但位置运算符“$”不支持。我可以知道我的查询的确切解决方案:

代码

$array = array(
    'sample_details.$.detail_no' => 3,
    'sample_details.$.email' => "test123@gmail.com",
    'sample_details.$.name' => "test123",
);

$this->mongo_db->update(table_name,array('_id'=>1),array('$set'=>$array),array('multiple'=>true));

1 个答案:

答案 0 :(得分:0)

要将数据插入数组,您希望使用$push$pushAll$addToSet等运算符。

您不能使用位置运算符,因为引用了documentation

  

数组字段必须作为查询文档的一部分出现。

此外,只有在您更新数组元素并且您不知道其索引而不是插入新内容时才有意义。