• MongoDB学习笔记-查询


    MongoDB中使用find或findOne函数执行查询

    find函数

    db.c.find()--查询集合c所有

    db.c.find({“name”:”zhangsan”})

    注意:查询条件的值必须是常量,也就是说不能用变量

    db.c.find({“name”:this.name})//这样是行不通的

    查询条件

    “$lt”对应<

    “$lte”对应<=

    “$gt”对应>

    “$gte”对应>=

    “$ne”对应!=

    用法:

    db.users.find({“age”:{“$gte”:18,”$lte”:30}})//查找年龄大于等于18小于等于30的用户

    db.users.find({“name”:{“$ne”:”张全蛋”}})

    OR查询

    MongoDB中用两种方式来实现OR查询:

    “$in”可以用来查询一个键的多个值,它非常灵活,可以指定不同类型的条件

    “$nin”与”$in”作用相反

    “$or”可以在多个贱种查询任意的给定值

    用法:

    db.users.find({“name”:{“$in“ [“王尼玛”,“张全蛋”]}})

    db.users.find(“user_id”:{“$in”: [123456,”123456”]})//用户id键的数据类型发生变化时的查找

    db.users.find({“name”:{“$or”: [“age”: {“$in”: [18,20,25]},{“gender”:1}]}})

    $not

    $not是元条件操作符,它可以用在任何其他条件之上。

    db.users.find({“id_num”:{“$not”:{“$mod”: [5,1]}}}) //”$mod”是取模运算符

    null类型

    users集合有三条数据如下:

    {“name”:王尼玛”,”age”:18}

    {“name”:”张全蛋”,”age”:20}

    {“name”:”唐马孺”,”age”:null}

    其中“唐马儒”的age为null值

    然后查询:db.users.find({“age”:null})

    查出来的结果不仅有{“name”:”唐马孺”,”age”:null},其他的两条也会被查出。因为null不仅会匹配某个键值为null的文档,而且还会

    匹配不包含这个键的文档。

    如果仅想匹配键值为null的文档,那就要用到”$exists”

    db.users.find({“age”:  [null],”$exists”:true})

    正则表达式

    db.users.find({“name”:/张./})

    查询数组

    db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})

    查询:

    db.food.find({“fruit”: “banana”})

    结果会匹配上面插入的文档

    $all:用于查找匹配多个条件下的数组

    例如,常见一个包含3个元素的集合:

    db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})

    db.food.insert({“fruit”: [“apple”,”kumquat”,”orange”]})

    db.food.insert({“fruit”: [“cherry”,”banana”,”apple”]})

    要找到既有”apple”又有“banana”的文档:

    db.food.find({fruit:{$all: [“apple”,”banana”]}})

    结果会找出第1个和第3个文档

    $size:用于查询特定长度的数组

    db.food.find({“fruit”:{“$size”:3}})

    按索引匹配:db.food.find({“fruit.2”:”peach”]})

    $slice:用于分割find/findOne返回值的结果集,返回某个键匹配的数组元素的子集。

    db.food.findOne({},{“fruit”:{“$slice”:2}})

    db.food.findOne({},{“fruit”:{“$slice”:-2}})//从右向左

    $elemMatch:要求MongoDb同时使用查询条件作用于同一个数组(默认情况下是多个条件作用于多个数组)

    db.test.find({“x”:{“$elemMatch”:{“$gt”:10,”$lt”:20}}})

    $where查询

    $where用于任何查询,它可以执行任意Javascript。因此为了安全起见,应该严格限制或不使用$where。

    db.food.find({“$where”:function(){
    
    forvar current in this(){
    
        //todo
    
    }
    
    }})

    使用$where查询时,速度上要比常规查询慢的多,因为它要把每个文档从BSON对象转换成Javascript对象。

    limit、skip和sort

    limit函数:用于限制查询结果的个数

    db.food.find().limit(3) //只返回3个匹配的结果。要是匹配的结果不到3个,则返回匹配数量的结果。

    skip函数:用于略过指定个数的文档

    db.food.find().skip(1) //略过第1个文档,返回后两个

    sort函数:对查询结果进行排序,1是升序,-1是降序

    db.food.find().sort({“fruit”:1})

     

  • 相关阅读:
    libevent(十)bufferevent 2
    libevent(九)bufferevent
    maven本地库更新失败
    IDEA常用快捷键
    ELASTIC SEARCH 安装
    Hbase建模选择
    ElasticSearch关键概念
    Nginx+tomcat 负载均衡
    MapReduce (MRV1)设计理念与基本架构
    Kafka安装验证及其注意
  • 原文地址:https://www.cnblogs.com/Khadron/p/5445866.html
Copyright © 2020-2023  润新知