Как вы запрашиваете или вставляете конкретные типы в MongoDB? - PullRequest
1 голос
/ 29 апреля 2011

Я использую привязки Perl для MongoDB, и кажется, что когда я вставляю числа, они иногда считаются строками. Когда я добавляю 0 к числу, оно конвертируется.

Есть ли способ с привязками Perg MongoDB, чтобы указать тип данных при вставке?

Есть ли способ запроса определенных типов?

Пример запроса типа может выглядеть следующим образом, если существует функция «$ type»:

db.c.find({ key: { '$type': 'NumberLong' } });

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

MongoDB содержит оператор типа $ для проверки типа данных bson: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24type

К сожалению, в Perl вы подвержены языковой семантике ... В Perl нет типа данных Number только Scalar.

Если Perl решил сохранить ваше значение в виде строки, так оно и будет в BSON, и $ type, скорее всего, не будет соответствовать ему правильно.

Тем не менее, похоже, что драйвер Perl пытается протестировать, может ли Perl обработать строку, сохраняя ее, как число, в котором case.it.is.stored такой; Вы можете проверить это вместе с оператором $ test.

0 голосов
/ 23 сентября 2013

Используйте параметр look_like_number в вашем драйвере Perl MongoDB http://search.cpan.org/~friedo/MongoDB-0.702.2/lib/MongoDB/BSON.pm#looks_like_number

Сработало как шарм для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...