【问题标题】:Problems with MongoDB, PHP and SerialisationMongoDB、PHP 和序列化的问题
【发布时间】:2012-03-13 15:24:34
【问题描述】:

我正在寻找是否有人可以阐明我遇到的问题。

在我的集合 Y 中,我有一个名为 ADJU 的字段,其中存储了 MongoID 的序列化 PHP 数组。

一个示例字段是 "a:1:{i:0;a:1:{s:4:\"MBID\";C:7:\"MongoId\":24:{4f2c5b9bb9a21d5010000005}}}"

im传入的参数是 "4f2c5b9bb9a21d5010000005"

public function read_adjudicating(MongoID $account_identifier){
    $regexObj = new MongoRegex("/".$account_identifier->__toString()."/");
    var_dump($regexObj);
    $result = $this->connection->X->Y->find(array('ADJU' => $regexObj), array('__id'));
    var_dump($result);

谁能弄清楚为什么它给了我 0 条记录,正如你所看到的,一个例子肯定有它?

感谢您的帮助!

【问题讨论】:

  • 附带说明,没有 php 错误或任何东西,我怀疑使用“s
  • 为什么要将序列化的字符串存储在 nosql 数据存储中?
  • 部分概念验证,数据来自之前安装的 MySQL

标签: php codeigniter mongodb mongodb-php


【解决方案1】:

好吧,这不是查询:

db.illogical.insert({'ADJU': "a:1:{i:0;a:1:{s:4:\"MBID\";C:7:\"MongoId\":24:{4f2c5b9bb9a21d5010000005}}}"})
db.illogical.find({'ADJU': /4f2c5b9bb9a21d5010000005/})
{ "_id" : ObjectId("4f605b9e5d2b96c06d2adb27"), "ADJU" : "a:1:{i:0;a:1:{s:4:\"MBID\";C:7:\"MongoId\":24:{4f2c5b9bb9a21d5010000005}}}" }

这意味着您编写的 php 代码与您期望的查询不对应,或者数据不是您期望的格式。

而不是调查原因 - IMO 最好更新用于从 mysql 导入数据的脚本以在插入 mongo 之前反序列化 - 或者编写一个 (php) 脚本来读取已经序列化的-mongo 数据,反序列化 - 并再次保存。

【讨论】:

  • 原来,我使用 var_dump 进行调试,它不适用于迭代器 (MongoCollection)。当我在它之前运行 iterator_to_array 时,它运行良好。不过感谢您的提示,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多