首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP如何更新特定字段

PHP如何更新特定字段
EN

Stack Overflow用户
提问于 2014-01-28 08:18:26
回答 1查看 94关注 0票数 0

我正在尝试开发一个基于RESTful的MongoDB PHP。我做了一篇文章,传递这样一个JSON体:

代码语言:javascript
运行
复制
{"id":"1","timestamp":"blah blah","value:"blah"}

然后,在名为"device“的集合中,我想创建这样一个结构:

代码语言:javascript
运行
复制
{ _id: 1
alt: blah
lng : blah
senseddata: {
    timestamp: blah
    value :blah
    }
    {
    timestamp: blah blah
    value: blah
    }
    .
    .
    .
}

换句话说,我只想更新“感测数据”字段。因此,我在中编写了这个查询:

代码语言:javascript
运行
复制
db.device.update({"_id":1},{$push:{"senseddata":{"timestamp":1234,"value":"12"}}})

而且效果很好。现在,我尝试在PHP中做同样的事情。我写了这个:

代码语言:javascript
运行
复制
$id = $data['id'];
$timestamp = $data['timestamp'];
$value = $data['value'];
$collection = $db->device;
$collection->update(array("_id" => $id),
                         array('$push' => array('senseddata' => array('timespamp' => $timestamp,'value' => $value)))
                   );

但没起作用。然后我尝试使用'$set‘,我注意到了一种奇怪的行为:如果我保留代码的原样,它就不能工作。但如果我那样写的话:

代码语言:javascript
运行
复制
//$id = $data['id'];
$timestamp = $data['timestamp'];
$value = $data['value'];
$id = 1;
$collection = $db->device;
$collection->update(array("_id" => $id),
                         array('$push' => array('senseddata' => array('timespamp' => $timestamp,'value' => $value)))
                   );

它工作(我不明白为什么),但它改变(如预期)我的集合的结构。这不是我想要的。有什么建议吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-28 08:56:19

这两段代码完全相同,只是在第二个代码中硬编码了$data['id']值,我认为这不是MongoDB的问题,而是您传递的数据的问题。

我将进一步调试您的应用程序。

编辑

JSON将id显示为字符串:

代码语言:javascript
运行
复制
{"id":"1","timestamp":"blah blah","value:"blah"}

但你永远不会转换为int。MongoDB可以识别类型,所以您需要:

代码语言:javascript
运行
复制
$id = intval($data['id']);
$timestamp = $data['timestamp'];
$value = $data['value'];
$collection = $db->device;
$collection->update(
    array("_id" => $id),
    array('$push' => array('senseddata' => array('timespamp' => $timestamp,'value' => $value)))
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21400211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档