6

ドキュメントをコレクションに保存するときに、MongoDB が複数のスペースを (1 つのスペースに) まとめていることに気付きました。先頭と末尾のスペースだけでなく、スペースの任意のシーケンス - すべての空白ではなくスペースのみ (スペースとタブでのみテスト済み)。これは、Java ドライバーと対話型の mongo シェルを使用しているときに発生するため、データストア自体の「機能」であると推測しています。

確かに、私は自分の値に余計な空白を入れるのが好きではなく、それらを取り除く過程でこれを発見しました。ただし、この動作は奇妙に思えます。なぜなら、データストアは通常、基になるストレージの制約に準拠するために最低限必要なものを超えてデータを「クック」またはその他の方法で変更することを控えることが期待されているためです。そうしないと (ユーザー/開発者に宣言されていない場合)、データや精度が失われる可能性があります。また、スペースを先頭と末尾で完全にトリミングするのではなく、スペースを折りたたむのはなぜですか?

    > 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 に答える