php - MongoDB update() 实际上是在我的代码中替换整个记录

标签 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" }

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

最佳答案

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

如果您只想设置特定字段,则需要 use the $set operator .

关于php - MongoDB update() 实际上是在我的代码中替换整个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16092586/

相关文章:

php - 如何调用类内部成员变量的__invoke方法

php - 如何根据类别id数组选择mysql中的记录?

php - 自动递增时的MySQL日期问题

java - MongoTemplate 标准查询

node.js - 天,周,年的 Mongoose 聚合分组

php - 使用变量位置的 file_get_contents() 的安全漏洞

php - Zend session fatal error

database - Mongoose 错误: The MongoDB server disallows overwriting documents using `updateOne`

mongodb - 使用 mongodb 存储在客户端和服务器端共享 Backbone 代码

带有 mongodb 的 Django 管理站点