0

私はこの構造を持っています:

{
  "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" }
                }
           }
        }
});

どこが間違っていますか?ありがとう!

4

1 に答える 1

1

MongoDB::Collectionの更新元の構文をチェックする

構文の更新 update (\%criteria, \%object, \%options?)

内部 MongoDB::Collection メソッドの更新

sub update {
    my ($self, $query, $object, $opts) = @_;
    ...
}

ただし、1 つのパラメーターのみを渡します。

$tbl->update(
{  # 1st anonymous hash
   { _id => MongoDB::OID->new(value => "$id") },
   { '$set' => {                             
       "position" => {       
           "A1" => { "state" => "En" }
           }
       }
   } 
});

したがって、メソッド update に渡されたパラメーターを使用して把握することをお勧めします。

于 2012-08-11T11:08:04.337 に答える