将$ lte和$ gte与find命令一起使用不会产生任何错误或结果

时间:2016-01-22 11:29:23

标签: mongodb

我的收藏品名称: stu

{ "_id" : ObjectId("56a1f7a6f432505f3a6b287b"), "name" : "user1", "mark1" : "100", "mark2" : "200" }
{ "_id" : ObjectId("56a1fd3cf432505f3a6b287c"), "name" : "user2", "mark1" : "89", "mark2" : "70" }

我写的查询

> db.stu.find({"mark1":{$gt:50}}).pretty()

这是什么问题? gt,lt gte,lte也无效。

2 个答案:

答案 0 :(得分:0)

这是因为mark1字段的值不是数字,您在查找查询中使用整数进行比较。要解决此问题,请将mark1字段从字符串转换为数字值,然后比较查询才能生效。

答案 1 :(得分:0)

mark1是一个字符串。 $gt仅适用于数字。 Javascript比较应该可以工作:

db.stu.find("this.mark1 > 50").pretty()