MongoDB $set 不更新记录

2024-01-10

我正在使用 PHP PECL 扩展尝试 MongoDB,但是我很难让某个更新查询正常工作。我在 SO 上四处寻找答案,但运气不佳。

我创建了一个基本集合:

$m = new Mongo;
$collection = $m->testdb->testcollection;

$collection->insert(array(
    0, 1, 1, 2, 3, 5
));

Using findOne and var_dump记录显示如下:

array
  '_id' => 
    object(MongoId)[6]
      public '$id' => string '4f3bde65a1f7a0315b000000' (length=24)
  0 => int 0
  1 => int 1
  2 => int 1
  3 => int 2
  4 => int 3
  5 => int 5

当我想使用更新时出现问题$set。我的查询基于底部显示的映射SQL 到 Mongodb 备忘单 http://www.php.net/manual/en/mongo.sqltomongo.php在 PHP 手册中

这里我想更新字段0重视100

$obj = $collection->findOne();

$collection->update(
    array('_id' => $obj['_id']),
    array('$set' => array(0 => 100))
);

重新获取记录显示保持不变.

我确实想知道我是否做错了什么_id,但是以下更新查询does工作,尽管用新值替换整个记录,而不是简单地更新一个字段。

$collection->update(
    array('_id' => $obj['_id']),
    array(0 => 100)
);

对象转储:

array
  '_id' => 
    object(MongoId)[7]
      public '$id' => string '4f3bde65a1f7a0315b000000' (length=24)
  0 => int 100

有人可以指出我做错了什么以及如何正确使用$set。我确信这是显而易见的,我只是需要第二双眼睛来关注它。

非常感谢。


我已经做了一些调查来了解为什么会发生这种情况。我认为我无法找到“解决”这个问题的方法。

JavaScript 数组和关联数组/对象之间存在差异。 PHP 中有数组和对象的区别。对于 PHP 来说,关联数组是一个数组,对于 JavaScript 来说,它是一个对象。

当 PHP 驱动程序需要将数组转换为 JSON 对象时,它会尝试确定数组是否是: 具有从 0 开始的按顺序编号的键的普通数组;或关联数组。当前的实现将任何具有从 0 开始按顺序编号的键的数组视为普通数组。而普通数组不包含keys。这就是问题所在。在驱动程序看到正常数组的情况下,发送到服务器的 BSON 中没有字段名称信息,因此服务器无法更新字段。

我想不出一种方法可以在不破坏任何现有代码的情况下改变这种行为。因此,如果您想要数字字段名,则必须为“主文档”使用 stdClass 对象。或者,您可以将这些密钥推送到嵌入文档中,然后更新:



<?php
$m = new Mongo;
$collection = $m->demo->testcollection;

$collection->insert(array(
    "_id" => 'bug341',
    'data' => array( 0, 1, 1, 2, 3, 5 )
));

$obj = $collection->findOne();

$update = array('data.0' => 'zero int');

$collection->update(
    array( '_id' => 'bug341' ),
    array( '$set' => $update )
);


$obj = $collection->findOne();
var_dump($obj);
?>
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB $set 不更新记录 的相关文章

  • WordPress 无法与站点通信

    我正在尝试添加一个搜索框 到目前为止我拥有的代码是 div style padding right 30px padding top 25px height 50px width 500px div 我不断收到以下消息 无法与站点通信以检查
  • 包含 WordPress 之外的 WordPress 内容

    我正在寻找构建 WordPress 网站的移动版本 并将其大部分内置于静态文件中 但我试图从运行移动网站的外部 PHP 文件内部访问 WordPress 内容 如何在不手动编写 SQL 查询的情况下访问循环或数据库 Edit 为了澄清一下
  • 在 WordPress 中挂钩 AJAX

    我一直在深入研究 Javascript 和 AJAX 的世界 我非常接近 但由于某种原因 我认为我没有正确地连接到 wordpress ajax 函数 我已经仔细阅读了文档和这个 认为 99 都在那里 这个应用程序的作用是有一个项目列表 每
  • StrRev() 不支持 UTF-8 [重复]

    这个问题在这里已经有答案了 我正在尝试编写一个代码来替换非阿拉伯支持的程序中支持的阿拉伯文本因为我需要在替换后反转文本 但它显示一些垃圾内容而不是想要的结果 这是代码 结果 After Reverse 我需要它是原来的样子 但相反 不是垃圾
  • Doctrine2 与条件的关联映射

    是否可以与教义 2 4 中的条件进行关联映射 我有实体文章和评论 评论需要管理员批准 评论的批准状态存储在布尔字段 approved 中 现在我有 OneToMany 关联映射到实体文章中的评论 它映射了所有评论 但我只想映射批准的评论 就
  • 将优惠券百分比添加到 WooCommerce 中的购物车页面

    我试图在购物车页面中显示优惠券百分比 但收到几个错误 这是我的自定义代码 Add Coupon Percentage to Cart function my coupon percentage cart value coupon if co
  • 雄辩的致命错误:参数传递的实例不正确

    我正在使用 Slim 和 Eloquent 在 PHP 中构建端点系统 如上所述here http www slimframework com news slim and laravel eloquent orm 在我的本地开发中运行它时
  • parse_str():jwage/purl 中不推荐调用不带结果参数的 parse_str()

    public function postIndex url new Url https www dropbox com 1 oauth2 authorize url gt query gt setData response type gt
  • 获取 PHP 网站的根 URL

    我目前正在开发一个 PHP 项目 正在寻找一种方法来获取网站根目录的 URL 我的根目录有一个配置文件 所以我正在考虑使用它来找出 基本 URL 我正在寻找一种动态执行此操作的方法 以便我可以找到网站根目录的 URL 即http domai
  • 在 MongoDB Java 驱动程序中如何使用 $filter

    我有一个适用于 MQL 的查询 我需要将其翻译成Java MQL 中的查询如下所示 db
  • 不要回显 cURL

    当我使用这段代码时 ch curl init url statuses curl exec ch curl close ch 我得到了我想要的东西 但如果我只是使用它 statuses被回显到页面上 我怎样才能阻止这个 将其放在第 2 行
  • PHP、in_array 和数组中的快速搜索(到最后)

    我对在数组中进行快速搜索的更好方法有疑问 我正在谈论一个特定的情况 假设我有一个数组 L A B C 当我开始时 当程序运行时 L 可能会增长 但到最后 当我进行搜索时 一个可能的原因是 L A B C D E 事实是 当我搜索时 我想要找
  • 最新 .Net MongoDb.Driver 的连接问题

    我创建了一个 MongoLab 沙箱数据库 我与 MongoChef 连接 效果很好 我通过 Nuget 安装了 MongoDB Driver 2 2 2 我编写了一些简单的 C 演示代码 但就是无法使其工作 连接字符串是直接从 Mongo
  • Yii:使用与控制器布局不同的布局渲染动作

    在 Yii 中 有没有办法使用不同的方式渲染单个动作layout比为控制器定义的值 我有一个操作希望其格式与其他操作不同 并且文档中不清楚这是否可能 我相信您可以调用该操作 layout多变的 public function actionY
  • 返回导航缓存 - IE

    当我在 IE 11 上运行 Web 应用程序时 收到如下警告消息 DOM7011 此页面上的代码禁用了后退和前进缓存 为了 更多信息 请参阅 http go microsoft com fwlink LinkID 291337 http g
  • 未定义的变量:$_SESSION

    我越来越E NOTICE当核心 CakePHP 文件尝试引用从未设置或未设置的会话时 会出现错误 cake libs cake session php line 372 function read name null if is null
  • 如何配置嵌入式 MongoDB 以在 Spring Boot 应用程序中进行集成测试?

    我有一个相当简单的 Spring Boot 应用程序 它公开一个小型 REST API 并从 MongoDB 实例检索数据 对 MongoDB 实例的查询通过基于 Spring Data 的存储库 下面的一些关键代码 Main applic
  • C++ 中是否有与 PHP 的explode() 函数等效的函数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中分割字符串 https stackoverflow com questions 236129 splitting a string in c 在 PHP 中 explode 函数将获取一个字
  • APC 将数据存储在哪里?

    我想用apc store 缓存一些结果 但我需要知道数据将存储在哪里 以及限制是什么 它总是存储在内存中吗 或者也写入磁盘 我希望将不经常访问的数据存储在磁盘上 我应该为此使用不同的缓存系统吗 这就是极限了吗 apc shm size 32
  • GET Ajax 在响应中返回 html 代码而不是 json 对象

    我有一个 ajax get 请求 如下所示 我正在使用 Nodejs Express 向 openshift 中的 server js 发出 GET 请求 但是 我在响应方法中获取 html 内容而不是 json 对象 这两个请求都是针对同

随机推荐

  • 修改Google Sheet纸张尺寸

    这是我第一次在谷歌表中使用脚本 我在网上看到了一些代码 我只是想知道如何修改下面代码的纸张尺寸 我们国家的法定尺寸是 8 5 x 13 var exportUrl url replace edit export exportFormat p
  • 鼠标悬停时的 Flash 事件

    有没有办法找出将鼠标移到 Flash 项目中的对象上时调用哪些方法 如果您尝试以下操作 您将能够跟踪对象上的每个侦听器 它将调用所有不带任何参数的侦听器 这将引发错误 如果你发现错误 你可以解析error getStackTrace查看听众
  • 如何发送带有添加空格的 urllib2 请求

    我正在尝试发送一个请求来打开使用空格的网页网址 以便我可以从该页面下载文件 在普通浏览器 即 Chrome 中 当您在地址栏中输入 url 时 文件会自动生成并要求您下载 我不再需要每次需要一组日志时都加载 Web 浏览器 而是尝试创建一个
  • 为什么弹性项目不会缩小到超过内容大小?

    我有 4 个 Flexbox 列 一切正常 但是当我向列中添加一些文本并将其设置为大字体大小时 由于 Flex 属性 它使列比应有的宽度更宽 我尝试使用word break break word它很有帮助 但是当我将列的大小调整到非常小的宽
  • 如何检索 slurm 脚本的内容?

    我几天前提交了一份工作 现在仍在运行 但我忘记了内容script sh那天 还有script sh已被删除 您知道如何恢复该脚本的内容吗 在最新版本中 您可以使用以下命令检索您自己作业的作业脚本 scontrol write batch s
  • 常见问题解答的语义 HTML 标记 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 具有不同原型的函数指针向量,我可以构建一个吗?

    我正在为一个名为 virtual machine 的类做一个解析器 我正在尝试为其构建一个函数向量 但是 vm 上的一些函数需要参数 不同数量 类型的参数 我仍然可以将它们放入我的向量中吗功能 因为它们只有 void f 这是代码 clas
  • 是否可以保存 Java Class 文件?

    我环顾四周 但似乎没有什么能完全涵盖我想做的事情 是否可以保存一个Class
  • Django 管理中的 MultiValueDictKeyError

    UPDATE model class PicturesManager models Manager def create pictures self flat img pictures self create car car image i
  • Butterknife 无法在我的适配器类中绑定

    我有一个适配器可以为我的导航抽屉绘制布局 我的导航抽屉包含两个内部 xml 文件 一个是Header另一个是Row 我将它们绘制在一个适配器中 但是当我尝试时setText 在我的标题上 我无法绑定 这是我的适配器类 public clas
  • Objective C 中 AudioToolbox 的引用错误

    我在一个简单的 Roulett 应用程序中尝试播放一些 wav 文件时遇到以下错误 我不确定该错误意味着什么 因为代码中没有出现警告标志 并且我已导入 这是错误 未定义的符号 AudioServicesCreateSystemSoundID
  • 快速对数计算

    所有代码都在同一台 Linux 机器上运行 在Python中 import numpy as np drr abs np random randn 100000 50 timeit np log2 drr 10 个循环 3 个循环中最好的
  • 解释 @property id 的语法

    在使用类似的东西编写委托时 我看到很多代码引用 property nonatomic weak id
  • 图像类型 int16 到 uint8 的转换

    我有一个具有数据类型的图像int16 因此 当我必须将其范围转换为 0 255 时 我有两种方法可以在 Python 中实现 1 Use numpy uint8直接运行 2 使用OpenCVcv2 normalize函数范围为 0 255
  • 通过互联网连接套接字失败

    目录 Preface 服务器端代码 客户端代码 本地计算机示例 成功的 互联网网络示例 不成功 我的可能性考虑 Preface 我从 MSDN 的类库示例中获取这些代码 所以它必须正确工作 是的 我说对了一部分 在我的电脑上运行就成功了 但
  • 寻的导弹,它们如何工作?

    我正在尝试创造什么 一个会向玩家发射导弹的物体 如果它与玩家相撞 玩家就会死亡 问题 导弹如何朝玩家移动 如何使导弹移动 使其不会立即直接移向玩家 以一定角度缓慢移动 我有一个公式 让鼠标成为 玩家 而导弹则朝它飞去 mouse Mouse
  • 使用java 7语法编译为java 5

    有没有办法使用 java 7 语法并生成适用于 1 5 的字节码 据我所知 选项 target and source不可能有什么不同 检查是否没有使用新的 API 也很好 但并不重要 不它不是 据我所知 不同 source and targ
  • Mule ESB 中的重连策略

    我正在尝试验证文档中提到的 Mule ESB 中的重新连接策略 我已将标准重新连接策略设置为重试次数为 5 次并设置一些超时 我的终点无法到达 因为故意停止它来测试场景 我在 Mule 控制台中有一个例外 异常堆栈是 1 连接被拒绝 con
  • 为什么我们会在每台计算机安装中收到非广告快捷方式的 ICE57 错误?

    此问题询问 ICE57 验证器之一是否会创建误报错误报告 我正在使用 WIX 3 9 生成安装程序 我想要使 用非广告快捷方式的每台计算机安装 此 WXS 示例安装一个文本文件和打开该文本文件的快捷方式
  • MongoDB $set 不更新记录

    我正在使用 PHP PECL 扩展尝试 MongoDB 但是我很难让某个更新查询正常工作 我在 SO 上四处寻找答案 但运气不佳 我创建了一个基本集合 m new Mongo collection m gt testdb gt testco