1、问题
MongoDB根据某个Long类型ID查询数据查不出来
db.getCollection('school_work_section').find({school_work_section_id:577199363866206209});
2、解决办法
Long类型的需要在NumberLong的对象里加上双引号才能查出来
db.getCollection('school_work_section').find({school_work_section_id:NumberLong("577199363866206209")});
3、延申
MongoDB中的NumberLong()是一种数据类型,它表示一个64位有符号整数。
在MongoDB中,NumberLong()用于存储大于2^31-1(即2,147,483,647)的整数值,因为MongoDB默认使用32位整数来存储数字,无法存储大于该值的数字,因此存储超过2^31-1的整数时,如下需要加上NumberLong()。
db.collection.insert({"longValueInString" : NumberLong("988998985857575789")})
同样,在查询时,如下也需要加上NumberLong()。
db.collection.find({
'riskProcessId':519453488216801286
})
4、注意NumberLong(x)和 NumberLong("x")区别
我们看一个数字,将其用于NumberLong(x)和NumberLong("x")来查看差异。
让我们创建一个包含文档的集合-
> db.demo603.insert({"longValue" : NumberLong(988998985857575789)}); WriteResult({ "nInserted" : 1 }) > db.demo603.insert({"longValueInString" : NumberLong("988998985857575789")});
在find()方法的帮助下显示集合中的所有文档-
> db.demo603.find().pretty();
这将产生以下输出-
{ "_id" : ObjectId("5e9605e5ed011c280a0905d1"), "longValue" : NumberLong("988998985857575808") } { "_id" : ObjectId("5e9605faed011c280a0905d2"), "longValueInString" : NumberLong("988998985857575789") }
结论:NumberLong(x)超出其限制值并四舍五入,而NumberLong("x")没有。