zoukankan      html  css  js  c++  java
  • MongoDB高级查询(一)

    高级查询

    1. and(逗号)

    db.col_name.find({'条件1','条件2'})
    
    # 例1:
    db.col_name.find({'name':'ps','sex':'nan'}).pretty()
    # 例2:
    db.col_name.find({age:{$gte:18,gender:'nan'}})

    2. or (注意中括号)

    $or:[{条件1},{条件2}]
    
    db.col_name.find($or:[{'desc':'数据库'},{'title':'mysql'}]).pretty()
    
    db.col_name.find({$or: [{age:{$gt:18}}, {gender:"nan"}]})

    3. and和or一起使用

    # 查询年龄大于18或性别男的学生,并且名字为xx
    db.test.find({$or:[{age:{$gte:18}}, {gender:'nan'}], name:'xx'})

    运算符:

    1.比较运算符

    小于  $lt
    小于等于 $lte
    
    大于 $gt
    大于等于 $gte
    
    等于   默认
    不等于  $ne
    
    例:db.col_name.find({age: {$gt:5}})
    # 年龄大于5的

    2. 范围运算符

    $in     
    $nin
    
    # 查询年龄为18,28的学生
    db.col_name.find(age:{$in:[18, 28]})

    3. 支持正则表达式

    使用 // 或 $regex

    # 查询姓黄的学生
    db.col_name.find({name:/^黄/})
    db.col_name.find({name:{$regex:'^黄'}})

    4.自定义查询

    使用$where 后面写一个函数,返回满足条件的数据

    # 查询年龄大于18的学生
    db.col_name.find({$where:function(){return this.age>20}})

    5.limit

    # 查询,拿一条,跳过一条 (不分先后)
    db.col_name.find().limit(1).skip(2)
    
    # skip() 用于跳过指定数量的文档

    6.投影

    db.col_name.find({},{name:1, gender:0})
    
    第二个字段:
    1  显示该字段
    0  不显示,
    不设置即为不显示

    7.排序 sort()

    db.col_name.find().sort({age:-1})
    
    默认为1
    可以为 -1

    8.统计个数 count()

    db.col_name.count({age:{$gt}:20})
    #统计年龄大于20的个数

    9.去重 distinct()

    db.test.destinct('去重字段',{条件})
    
    db.test.distinct('gender', {age:{$gt:20}})
    # 查找年龄大于20的性别
  • 相关阅读:
    洛谷$P4768 [NOI2018]$归程 $kruscal$重构树
    洛谷$P2469 [SDOI2010]$ 星际竞速 网络流
    洛谷$P2572 [SCOI2010]$ 序列操作 线段树/珂朵莉树
    $CF914D Bash and a Tough Math Puzzle$ 线段树
    洛谷$P2824 [HEOI2016/TJOI2016]$ 排序 线段树+二分
    洛谷$P$4137 $Rmq Problem / mex$ 主席树
    bat语法
    zabbix监控oracle
    sqlserver常用命令-4
    sqlserver库相关-表相关-3
  • 原文地址:https://www.cnblogs.com/shuai06/p/12397488.html
Copyright © 2011-2022 走看看