MongoDB update()实际上替换了我的代码中的整个记录

时间:2013-04-18 20:36:44

标签: php mongodb

我正在使用来自PHP脚本的表单数据更新我的MongoDB数据库,它可以将可变数量的元素更新到MongoDB中。出于测试目的,我试过..

$update = '"continent"=>"Asia"'; // one element to be updated, would be multiple eventually

$tracking->sessions->update(array("ts"=>$timestamp,"fb_id"=>$fb_id),array($update));

我这样做时没有收到任何错误,但是数据没有在数据库中更新,记录实际上是用这个替换的:

{ "_id" : ObjectId("517048f87a088a7e65000003"), "0" : "'continent'=>'Asia'" }

原始记录:

{ "_id" : ObjectId("517048f87a088a7e65000003"), "fb_id" : "123456", "ts" : "1366316915", "continent" : "North America", "city" : "New York" }

不确定我做错了什么。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

这是因为您告诉它将匹配的文档更新为传入的文档。

如果您只想设置use the $set operator所需的特定字段。