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