PHP PECL拡張を使用してMongoDBを試していますが、特定の更新クエリが機能するのが難しいです。私は小柄な答えを求めて周りを探しました。
$m = new Mongo;
$collection = $m->testdb->testcollection;
$collection->insert(array(
0, 1, 1, 2, 3, 5
));
findOne
と、次のようにレコードが表示されますvar_dump
を使用した:私は$set
を使用して更新したいとき
array
'_id' =>
object(MongoId)[6]
public '$id' => string '4f3bde65a1f7a0315b000000' (length=24)
0 => int 0
1 => int 1
2 => int 1
3 => int 2
4 => int 3
5 => int 5
問題が来る
私は基本的なコレクションを作成しました。私は100
$obj = $collection->findOne();
$collection->update(
array('_id' => $obj['_id']),
array('$set' => array(0 => 100))
);
再フェッチレコードはそれ
ままであることを示しているを評価するために、フィールド0
を更新したいここでPHPマニュアル
にSQL to Mongo Cheat Sheetの底部に向かって示すマッピングに私のクエリを基づかています変更なし。
私は_id
と間違って何かをしていた場合、私は単純に一つのフィールドを更新していない、新しい値でレコード全体を交換するにもかかわらず、しかし、次の更新クエリが作業を行い、不思議をしました。
$collection->update(
array('_id' => $obj['_id']),
array(0 => 100)
);
オブジェクトのダンプ:
array
'_id' =>
object(MongoId)[7]
public '$id' => string '4f3bde65a1f7a0315b000000' (length=24)
0 => int 100
誰かが私が間違っているのかを指し示してくださいすることができ、そしてどのように適切に$set
を使用します。私はそれが明らかであると確信して、私はそれの上に目の第二のペアが必要です。
多くのありがとうございます。
はこの作品行います '配列( '$セット' =>配列=> 100(1))'? –
@yi_H:**は**働いています。フィールド '1'は更新されますが、なぜフィールド '0'では機能しませんか? – Leigh