为什么mongo会修剪空间?

时间:2012-02-07 23:56:29

标签: 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 " }

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

1 个答案:

答案 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     "
}
>