「挿入」については、まったく問題ありません。
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 の理解が間違っているのでしょうか、それとも正しく動作しませんか?