我正在使用MongoDB的Perl绑定,似乎当我插入数字时,它们有时被视为字符串。当我向数字加0时,它会被转换。
使用MongoDB Perl绑定有没有办法在插入时指定数据类型?
是否还有一种查询特定类型的方法?
如果存在“$ type”函数,示例类型查询可能如下所示:
db.c.find({ key: { '$type': 'NumberLong' } });
答案 0 :(得分:2)
MongoDB确实包含一个$ type运算符,用于检查bson数据类型:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24type
不幸的是在Perl中你受到语言语义的限制...... Perl中没有Scalar的Number数据类型。
如果Perl决定将您的值存储为字符串,那么它将如何转到BSON,$ type可能无法正确匹配。
然而它看起来像Perl驱动程序尝试。测试Perl是否可以将字符串保存为一个数字,其中case.it.is.stored这样;您可能希望与$ test运算符一起测试它。
答案 1 :(得分:0)
在perl MongoDB驱动程序中使用looks_like_number参数 http://search.cpan.org/~friedo/MongoDB-0.702.2/lib/MongoDB/BSON.pm#looks_like_number
像我一样的魅力