0

「挿入」については、まったく問題ありません。

PHP - MongoDB は意図したとおりに挿入しますが、更新は意図したとおりに機能しません。

「ip」および「time」フィールドを持たないドキュメントを「挿入」した直後。

「ip」フィールドは問題なく動作します - {'ip':'127.0.0.1'}

しかし、どういうわけか 'time' 配列フィールドが奇妙な動作をします。

{'time':{'realtime':'2011-01-01 12:00:00', 'mongotime': ISODate("2011-01-01T00:00:00")}}

「時間」がドキュメントに挿入され、問題ないはずです。

しかし、この「時間」配列と独立した「リアルタイム」、「mongotime」の両方がドキュメントに挿入されます。

その結果、私は得ています

{'time':{'realtime':'2011-01-01 12:00:00', 'mongotime': ISODate("2011-01-01T00:00:00")}, 'realtime':'2011- 01-01 12:00:00'、'mongotime': ISODate("2011-01-01T00:00:00")}

なぜこれが起こるのかわかりません...

これはとても奇妙です。

これが私のコードです:

$query = array('username'=>"$username");
$realtime = date("Y-m-d H:i:s");
$mongotime = new Mongodate(strtotime($realtime));
$set_item = array('ip'=>"$IP", 'time'=> array('realtime'=>"$realtime", 
         'mongotime'=>  $mongotime));
$db->member->update($query, array('$set' => $set_item));

mongoDB の理解が間違っているのでしょうか、それとも正しく動作しませんか?

4

1 に答える 1

1

あなたのコードは問題ないはずです。

コードを開発する際に、おそらく数回テストを行い、不適切な修飾子ドキュメントでドキュメントを更新したことでしょう。今はゴミが入っています。

クリーンなドキュメントでテストするだけです。

于 2011-08-16T08:16:45.873 に答える