6

我注意到 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

4

1 回答 1

2

适用于 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     "
}
>
于 2012-02-08T10:10:56.603 回答