0

使用“插入”我完全可以接受。

PHP - MongoDB 以我想要的方式插入,但更新没有按我的计划工作。

在“插入”之后没有“ip”和“time”字段的文档。

'ip' 字段工作得很好 - {'ip':'127.0.0.1'}

但不知何故,“时间”数组字段的行为很奇怪。

{'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 回答