2011-04-28 2 views
1

MongoDB에 Perl 바인딩을 사용하고 있는데, 숫자를 삽입하면 문자열로 간주되는 경우가 있습니다. 숫자에 0을 더하면 변환됩니다.MongoDB에서 특정 유형을 쿼리하거나 삽입하는 방법은 무엇입니까?

MongoDB Perl 바인딩에서 삽입시 데이터 유형을 지정하는 방법이 있습니까?

특정 유형을 쿼리하는 방법이 있습니까? 는 "$ 유형"기능이 있다면

예 유형의 쿼리는 다음과 같습니다

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

에 대한 매력처럼 작동 한 펄 MongoDB를 드라이버에서 looks_like_number 매개 변수를 사용? :) –

답변

2

MongoDB를가 bson 데이터 타입에 대해 점검 달러 (A $) 타입 연산자를 포함하지 : 불행하게도 http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24type

에서 Perl에는 언어 의미론이 적용됩니다 ... Perl에는 스칼라에만 Number 데이터 유형이 없습니다.

Perl이 값을 문자열로 저장하기로 결정한 경우 BSON으로 이동하고 $ type이 올바르게 일치하지 않을 것입니다.

그러나 Perl 드라이버가 문자열을 대소 문자를 case.it.is.stored와 같은 숫자로 처리 할 수 ​​있는지 테스트하는 것처럼 보입니다. $ test 연산자와 함께 이것을 테스트 할 수 있습니다.

+0

Perl에서 숫자에 0을 더하면 항상 숫자로 저장됩니다. 그렇지 않으면 가끔 문자열로 저장됩니다. 이 "$ type"연산자를 살펴 보겠습니다. – Neil

관련 문제