【问题标题】:PHP & MongoDB: numeric field names return as "NumberLong(X)" stringPHP & MongoDB:数字字段名称返回为“NumberLong(X)”字符串
【发布时间】:2014-04-08 15:21:22
【问题描述】:

我有一个数据结构,其中包含一个带有数字名称字段的对象,例如

{1 : {views:42, impressions:999}, 2 : {...} ...}

这不是一个“数组”,只是一个标识符。 当我通过PHP Mongo extension 1.4.4(mongo 2.4.7 和 Web 服务器都在 Win7 上运行)请求这些记录时,我按预期收到了这些密钥,即

2
    impressions    9
    views          0
3
    impressions    9
    views          9
1
    impressions    50
    views          50

但是当这段代码在暂存环境中运行时(LAMP,我们有 mongo 驱动程序 1.6.0-dev,mongodb 本身是 2.4.2)我以这种奇怪的方式接收它们:

NumberLong(2)
    impressions    9
    views          0
NumberLong(3)
    impressions    9
    views          9
NumberLong(1)
    impressions    50
    views          50

其中 'NumberLong(X)' 是纯字符串,来自我的光标。 解决这个问题并用字符串替换数字名称并不是什么大问题,但我想知道哪个驱动程序(或 DB)行为错误以及原因。

两台服务器都启用了“mongo.native_long”。

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

    【讨论】:

    • 更新了问题。两台服务器都启用了“mongo.native_long”。
    • @EugeneM 似乎我读得不够近,虽然是 1.6?我不认为有1.6? github.com/mongodb/mongo-php-driver/releases
    • 是的,实际上它是 1.6.0-dev。以前没有注意到,这可能是个问题。
    • @EugeneM 是的,降级到稳定,虽然它可能仍然会在那里发生,但如果它仍然存在,我会继续
    • 在 1.5.0 中更改的默认值 - 并且强制用于 32 位构建。在链接页面上查看更新的变更日志。
    猜你喜欢
    • 2011-07-16
    • 2020-07-19
    • 2018-04-19
    • 1970-01-01
    • 2016-02-06
    • 2015-02-18
    • 2015-12-16
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多