【问题标题】:why does mongo trim spaces on save?为什么mongo在保存时会修剪空格?
【发布时间】:2012-02-07 23:56:28
【问题描述】:

我注意到 MongoDB 在将文档保存到集合时会将多个空间折叠在一起(合并为一个空间)。它不仅仅是前导和尾随空格,而是任何空格序列 - 并且只有空格,而不是所有空格(仅使用空格和制表符进行测试)。使用 Java 驱动程序和交互式 mongo shell 时会发生这种情况,所以我猜这是数据存储本身的“功能”。

诚然,我不喜欢我的值中有多余的空格,我在剥离它们的过程中发现了这一点。但是,这种行为看起来很奇怪,因为通常期望数据存储不会“烹饪”或以其他方式更改超出符合底层存储约束的最低要求的数据。否则(未向用户/开发人员声明)可能会导致数据或精度丢失。此外,为什么要折叠空间而不是在头部和尾部完全修剪它们 - 为什么在非空间字符之间折叠它们?

    > db.test.remove()
    > db.test.save({x: "     x     \t\t\t     x     "})
    > db.test.findOne()
    { "x" : " x \t\t\t x " }

是我错误地启用了这个功能,还是默认启用了?我在JIRA 上找不到任何东西。这对我来说似乎是一个错误,但也许我只是很特别。 MongoDB 2.0.2版

【问题讨论】:

  • 它在 2.0.2 上对我正常工作
  • 确认我在 2.0.2 上也能正常工作
  • 奇怪...我会尝试另一个版本(可能是每晚)来帮助隔离问题。感谢@pingw33n 和@jdi 的反馈!

标签: mongodb mongodb-java mongo-shell


【解决方案1】:

适用于 2.0.X 和 2.1.X:

> db.version()
2.1.0-pre-    
> db.test.remove()
> db.test.save({x: "     x     \t\t\t     x     "})
> db.test.findOne()
{
    "_id" : ObjectId("4f3249e80b74284ac62e629d"),
    "x" : "     x     \t\t\t     x     "
}
>

【讨论】:

  • 重启(windoze!)并重启mongod后问题莫名其妙地清除了。我不知道根本原因可能是什么。感谢您的测试。
  • 这很奇怪。如果您可以再次重现它,可能值得在 jira.mongodb.org 上报告
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
相关资源
最近更新 更多