【问题标题】:MongoDB update query where field name has a DOT (period) in itMongoDB 更新查询,其中字段名称中包含 DOT(句点)
【发布时间】:2013-10-21 09:16:51
【问题描述】:

所以在我问这个问题之前,我想说我确实知道 Mongo 不允许在字段名称中使用句点,即点 (.)。

令人惊讶的是,PHP 能够将带有句点的数据作为多维数组中的字段名称插入到 mongo。我使用 PHP 5.4 版 Mongo 驱动程序 1.4。

所以数组结构有点像:

Array(
["field1"] => "value",
["field2"] => "123",
["field3"] => array( ["abc.def"] => array( ["test"] => "value" )
);

我想要实现的是将 field2 值从字符串更改为整数。

其庞大的数据和应用程序取决于它,我需要将类型从字符串更新为整数或从整数更新为字符串,我可以控制将来插入的应用程序但输入的内容无法更改,请给我一些解决方法一样的。

非常希望有人能对此提出一个想法..!! ;)

【问题讨论】:

  • MongoDb 中的数据结构是什么样的?您是否只是尝试进行某种数据修复?目前尚不清楚您要完成什么或您已经尝试过什么。
  • 数据结构如上所示,您可能会看到上面的 PHP 数组与插入 mongodb 的 JSON 结构相同。不知何故,我找到了解决方法。 ;)
  • 看起来你解决了你的问题。我在问 MongoDB 中的数据是什么样的——比如通过控制台。
  • 哦..当然.. {"field1":"value","field2":"123","field3":{"abc.def":{"test":"value" }}}

标签: php mongodb mongodb-php


【解决方案1】:

我能找到的最佳解决方法是使用 db.collection.update();虽然我不得不经历一个漫长的 excel 过程并对每一行进行类似的查询,之后我意识到我可以使用 db.collection.find().forEach();

因此,要减少解决方案,请使用 forEach 迭代并执行 db.collection.update(),条件匹配要更新的数据和字段。我将查询格式化为字符串,然后使用 eval();

如果你找到了更短的方法,请让我知道..!!

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多