почему монго обрезает пробелы при сохранении? - PullRequest
6 голосов
/ 08 февраля 2012

Я заметил, что MongoDB объединяет несколько пробелов (в один пробел) при сохранении документов в коллекцию.Это не только начальные и конечные пробелы, но любая последовательность пробелов - и только пробелы, а не все пробелы (проверено только с пробелом и табуляцией).Это происходит при использовании драйвера Java, а также интерактивной оболочки монго, поэтому я предполагаю, что это «особенность» самого хранилища данных.

По общему признанию, мне не нравятся посторонние пробелы в моих ценностях, и я обнаружил это в процессе удаления их.Однако такое поведение кажется странным, поскольку обычно ожидается, что хранилища данных будут воздерживаться от «готовки» или иным образом изменять данные сверх того, что минимально необходимо для соответствия базовым ограничениям хранилища.В противном случае (если это не заявлено пользователям / разработчикам) может произойти потеря данных или точность.Кроме того, зачем сворачивать пробелы вместо того, чтобы полностью обрезать их в голове и хвосте - и почему на земле сворачивать их между непробельными персонажами?

    > 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 Ответ

2 голосов
/ 08 февраля 2012

Работает на 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     "
}
>
...