Mongo字符串类型的数值查询---$Where查询介绍

​        在Mongo中都知道字符串类型大小比较都是以ASCII进行比较的,所以无法真实比较字符串类型的数值大小

​        比如查询age大于3的:

db.getCollection('ddzinttest').find({"age":{$gt:"3"}}) 

    得到的结果肯定不是我们所需要的

     那么这种问题该怎么解决呢。Mongo中有一种**$where**查询,这种查询是可以解决这样需求,

db.getCollection('ddzinttest').find({"$where":"this.age>3"})

        可以看到使用**$where**是可以达到这个需求的,那**$where**这东西是什么呢:

  其实$where查询是将JavaScript表达式的字符串或函数作为查询的一部分

  Mongo是支持JS语言的,也就是说可以在Mongo中使用JS函数,也就是说其实语句可以这么写

db.getCollection('ddzinttest').find({$where:function(){return this.age>3}})

  而this.age>3是字符串形式的表达方式

  当然可以利用JS函数写一些更加复杂的查询:例如子文档中字符串的比较查询

db.getCollection('ddzinttest').find({$where:function(){
    for(var i =0;i<this.Child.length;i++){
        var currentChild=this.Child[i];
        if(currentChild.key==='123'&&currentChild.value>'111'){
            return true;
        }
    }
    return false;
}})            

查询子文档数组Child中key等于123并且value大于111的数据

  当然,这种复制的就不能使用字符串表达式了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏博客园

Core官方DI解析(4)--CallSiteRuntimeResolver

这两个类都在其CallSiteVisitor<TArgument, TResult>基类中

913
来自专栏小李刀刀的专栏

Unicode编解码函数

在用XMLHTTP进行远程数据传输的时候,如果涉及到不同编码,比如从oblog向我的博客发送一个trackback ping,数据中包含的中文字符就会出现乱码。...

3455
来自专栏小小挖掘机

来学习几个简单的Hive函数啦

咳咳,今天来介绍一下几个Hive函数吧,先放一张我登哥划水的照片,希望大家也做一只自由的鱼儿,在知识的海洋里游呀游,嘻嘻! ? 今天我们来介绍几个Hive常用的...

4494
来自专栏闵开慧

pig操作与注意事项

grunt> A = load 'hdfs://192.168.0.118:9000/user/hadoop/data.txt' as (name:charar...

2783
来自专栏青青天空树

struts返回json数据

  实际上就是在struts中获取response对象的输出流。然后写入你要返回的json数据,本质和用servlet返回json数据是一样的,需要自己导入js...

1636
来自专栏码匠的流水账

聊聊flink的SourceFunction

flink-streaming-java_2.11-1.6.2-sources.jar!/org/apache/flink/streaming/api/func...

2032
来自专栏博客园

Core官方DI解析(4)--CallSiteRuntimeResolver

​ CallSiteRuntimeResolver类型是一个创建或获取服务实例的类型,这个类型继承了CallSiteVisitor<TArgument, TRe...

991
来自专栏我是攻城师

Apache Pig学习笔记(二)

3589
来自专栏Android开发实战

设计模式-单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。

843
来自专栏Golang语言社区

【Go 语言社区】Golang内存分配

golang内存分配 new一个对象的时候,入口函数是malloc.go中的newobject函数 func newobject(typ *_type) uns...

3815

扫码关注云+社区

领取腾讯云代金券