Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
perl mongodb复杂结构更新_Perl_Mongodb - Fatal编程技术网

perl mongodb复杂结构更新

perl mongodb复杂结构更新,perl,mongodb,Perl,Mongodb,我有这样的结构: { "user" => "xxxx", "position" => { "A1" => { "state" => 'It', region=>"LOM" etc etc..}, "A2" => { .... }, "A3" => { .... }, .... "An" => { .. } } } 插入就可以了。但是更新返回此错误: not a reference

我有这样的结构:

{
  "user" => "xxxx",
  "position" => 
  {
     "A1" => { "state" => 'It', region=>"LOM" etc etc..},
     "A2" => { .... },
     "A3" => { .... },
     ....
     "An" => { .. }
  }
}
插入就可以了。但是更新返回此错误:

not a reference at /usr/local/lib/perl/5.12.4/MongoDB/Collection.pm line 376
我的更新是:

$tbl->update({
{ _id => MongoDB::OID->new(value => "$id") },
       { '$set' => 
            { 
                "position" => 
                {
                    "A1" => { "state" => "En" }
                }
           }
        }
});
我哪里错了?
太棒了

我检查更新源的语法

语法更新
更新(\%标准、\%对象、\%选项?)

内部MongoDB::收集方法更新

sub update {
    my ($self, $query, $object, $opts) = @_;
    ...
}
但只传递1个参数

$tbl->update(
{  # 1st anonymous hash
   { _id => MongoDB::OID->new(value => "$id") },
   { '$set' => {                             
       "position" => {       
           "A1" => { "state" => "En" }
           }
       }
   } 
});
因此,我建议您使用传递给方法更新的参数来解决问题。

$tbl->update({u id=>MongoDB::OID->new(value=>“$id”)},{'$set'=>{“position”=>{“A1”=>{“state”=>“En”}}});谢谢所以这是正确的!;)