1

このクエリを実行してみました:

$collection->update(
    array('_id' => 'mongoIDhere'),
    array(
        '$set' => array("parent" => 'data'),
        array("parents" => 'data')
    ),
    array("upsert" => true)
);

ただし、2 番目の「set」パラメーター ( array("parents" => 'data') ) のみが更新されます。2 つの別々のクエリで実行すると、これらは正常に機能しますが、一緒にするとうまくいきません。

4

4 に答える 4

1
$collection->update(
    array('_id' => 'mongoIDhere'),
    array(
        '$set' => array("parent" => 'data'),
    ),
    array("upsert" => true)
);

array("parents" => 'data')MongoDBはkey->value ペアの形式の配列のみを受け入れることを覚えておいて$something => array("parents" => 'data')ください。

于 2011-10-11T07:17:31.070 に答える
0

複数のオプションで試す

$collection->update(
    array('_id' => 'mongoIDhere'),
    array('$set' => array("parent" => 'data')),
    array("upsert" => true, "multiple" => true)
);

「複数」オプション

$criteria に一致するすべてのドキュメントが更新されます。MongoCollection::update() は、MongoCollection::remove() とはまったく逆の動作をします。デフォルトでは、一致するすべてのドキュメントではなく、1 つのドキュメントを更新します。データベースは将来のある時点でデフォルトの動作を変更する可能性があるため、複数のドキュメントを更新するか、単一のドキュメントを更新するかを常に指定することをお勧めします。

PHP Doc の Mongocollection

于 2016-04-22T10:40:18.497 に答える
0

このようなことを試してください。

$collection->update(
            array('_id' => 'mongoIDhere'),
            array(
                '$set' => 
                          array(
                                 array("parent" => 'data'),
                                 array("parents" => 'data')
                               )
            ),
            array("upsert" => true) 
         );

これがうまくいくことを願っています..

于 2016-08-31T12:30:31.143 に答える