2016-01-22 36 views
3

我的集合名称: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也不起作用。

+0

我认为存储在集合中的标记具有字符串数据类型。 – dikesh

+1

您最好将您的数据转换为比以往任何时候都更好的数据类型,例如JS评估,以便查找 – Sammaye

回答

0

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

+1

Thanks man。!works – srivat1

0

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

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