为什么mongo会修剪空间?

Rub*_*ONO 6 mongodb mongodb-java mongo-shell

我注意到在将文档保存到集合时,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 " }
Run Code Online (Sandbox Code Playgroud)

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

Rem*_*iet 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     "
}
>
Run Code Online (Sandbox Code Playgroud)