我注意到在将文档保存到集合时,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
答案 0 :(得分: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 "
}
>