MongoDB-SQL语法

可视化软件:Navicat

1. MongoDB-查询

db.getCollection('表名').find({});

db.getCollection('表名').find({"_id":1});

2. MongoDB-NE(NOT EQUAL)查询

db.getCollection('表名').find({"_id":{$ne:1}})

3. MongoDB-IN查询

db.getCollection('表名').find({"_id":{$in:[1,2,3]}});

4. MongoDB-NOT_IN查询

db.getCollection('表名').find({"_id":{$nin:[1,2,3]}})

5. MongoDB-EXISTS查询

db.getCollection('表名').find({"字段名":{$exists:true}});

当boolean为true,$exists匹配包含字段的文档,包括字段值为null的文档。

当boolean为false,$exists返回不包含对应字段的文档。

6. MongoDB-大于小于查询

db.getCollection('表名').find({"_id":{$gt:1}})
(>)---大于---$gt
(<)---小于---$lt
(>=)---大于等于---$gte
(<=)---小于等于---$lte

7. MongoDB-大于小于日期查询

Date方式
db.getCollection('表名').find({"时间字段":{$gte:new Date(2000,1,1)},"时间字段":{$lte:new Date(2030,1,1)}});
ISODate方式
db.getCollection('dictValue').find({"createTime":{$gte:ISODate("2000-01-01T00:00:00Z")},"createTime":{$lte:ISODate("2030-01-01T00:00:00Z")}});

8. MongoDB-模糊匹配

db.表名.find({"字段名": {$regex:'要模糊匹配的字符',$options:'i'}});
$options: '<options>':选项 含义
i===>大小写不敏感
m===>查询匹配中使用了锚,例如^(代表开头)和$(代表结尾),以及匹配n后的字符串
x===>忽视所有空白字符
s===>允许点字符(.)匹配所有的字符,包括换行符

9.分页与排休查询

//条件查排序并分页:1.是升序, -1是降序;2-页码,10-每页条数
db.getCollection('order').find().sort({"payTime":-1}).limit(2,10);

10. MongoDB-修改-所有匹配的数据

db.getCollection('表名').update({"字段名" : "原字段值"},{$set:{"字段名" : "新字段值"}},{multi:true});

11. MongoDB-新增数据

db.getCollection('表名').save({"_id":NumberLong(1)});

12. MongoDB-删除数据

db.getCollection('表名').remove({});
db.getCollection('表名').remove({"_id":1});

13. MongoDB-两个字段比较

常规查询:
db.getCollection('表名').find({$expr:{$gt:["$approve_create", "$approve_delete"]}})
聚合查询:
db.getCollection('表名').aggregate({$match:{$expr:{$gt:["$approve_create", "$approve_delete"]}}})
$gt -------- greater than >
$gte --------- gt equal >=
$lt -------- less than <
$lte --------- lt equal <=
$ne ----------- not equal !=
$eq -------- equal =

14.MongoDB-联表查询,查询总数并分页

联表查询总数:

db.getCollection("表名").aggregate([
  { "$match" : { "userType" : 4.0 } },
  { "$group" : {   //分组查询,分组查询后的结果集中只有下面的字段
    "_id" : "$userId",  //根据userId来分组,分组后userId就是结果集的_id
    "count" : { "$sum" : "$isDownLoad" }, //分组计算总数
    "mobile" : { "$last" : "$mobile" },
    "time" : { "$last" : "$inviteTime" },
    "userId" : { "$last" : "$userId" },
    "userType" : { "$last" : "$userType" }
  } },
  {"$match" : {"count" : { "$gt" : 0.0 }}  },  //分组后再过滤筛选,只要总数大于0的
  { "$lookup" : {
    "from" : "联表查询的表名",  //和上面过滤筛选出来的结果集进行联表操作
    "localField" : "userId", //当前联表的关联字段
    "foreignField" : "_id", //上面查询结果的临时表的关联字段
    "as" : "user" //给当前联表取别名为user
  } },
  { "$unwind" : {
    "path" : "$user",
    "includeArrayIndex" : "1index",
    "preserveNullAndEmptyArrays" : true
  } },
  { "$match" : {"user.provinceId": {"$eq":"520000"}} },  //联表后在过滤筛选数据
  { "$count" : "total" }  //查询总数
])

联表分页查询:

db.getCollection("表名").aggregate([
  {"$match" : { "userType" : 4.0 }},
  { "$group" : {
    "_id" : "$userId",
    "count" : { "$sum" : "$isDownLoad"},
    "mobile" : { "$last" : "$mobile" },
    "time" : { "$last" : "$inviteTime" },
    "userId" : { "$last" : "$userId" },
    "userType" : { "$last" : "$userType" }
  }},
  { "$match" : { "count" : { "$gt" : 0.0 }}},
  {"$lookup" : {
    "from" : "联表查询的表名",
    "localField" : "userId",
    "foreignField" : "_id",
    "as" : "lp"
   } },
  { "$unwind" : {
    "path" : "$lp",
    "includeArrayIndex" : "1index",
    "preserveNullAndEmptyArrays" : true
  } },
  { "$match" : {
    "lp.provinceId" : "520000" ,
    "lp.cityId" : "520100"
  } },
  { "$project": {"mobile" : "$mobile","time":"$time","userId":"$userId","userType":"$userType","count":1,"address":'$lp.address'} },  //最后结果集只需要的字段数据
  {"$sort" : { "time" : -1.0 }},  //排序
  { "$skip" : 20.0 },   //跳过前面20条数据,从第21条数据开始收集
  { "$limit" : 10.0 }   //只收集10条数据
], { "allowDiskUse" : false } );

15.MongoDB-加索引

db.表名.ensureIndex({"字段1":1,"字段2":1,"字段3":1})

MongoDB-SQL语法的更多相关文章

  1. NoSQL 数据库概览及其与 SQL 语法的比较

    NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用的难题. 本文对NoSQL数据库的定义.分类.特征.当前比较流行的NoSQL数据库系统等进行了简单的介绍,并对N ...

  2. NoSQL数据库概览及其与SQL语法的比較

    [文章摘要] HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统.同一时候也是知名的NoSQL数据库之中的一个.NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤 ...

  3. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  4. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  5. SQL 语法总结

    学了一个月的java,开始有入门的感觉.这段时间接触到了java的JDBC, 发现学习这部分的内容还是要有SQL的基础,于是花费了几天时间学习了一下SQL语法,并将其总结于下. 选择数据 SELECT ...

  6. SQL语法和运算符(一)

    一个数据库通常包含一个或多个表.每个表由一个名字标识,表包含带有数据的记录(行). 一些最重要的SQL命令(SQL对大小写不敏感): 一.SQL语法 select:从数据库中提取数据 update:更 ...

  7. [转]MySQL 最基本的SQL语法/语句

    MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下.   DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete ...

  8. SQL语法整理

    SQL是Structured Query Language的缩写,中文全名为结构化查询语言,是一种用于数据存储,查询,更新和管理的关系数据库系统. SQL语法 创建表 create table tab ...

  9. ORACLE分页查询SQL语法——最高效的分页

    --1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT  ...

  10. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

随机推荐

  1. 自学前端-HTML5+CSS-综合案例一-热词

    综合案例一-热词 目录 综合案例一-热词 1.设计需求 2.设计所需标签和CSS样式 3.设计具体步骤 4.遇到的问题 设计图如下 1.设计需求 ①需要鼠标放上去有显示透明 ②需要点击后跳转到相应页面 ...

  2. Java并发工具CountDownLatch的使用和原理

    1.等待多线程完成的 CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作. 假如有这样一个需求:我们需要解析一个 Excel 里多个 sheet 的数据 ...

  3. 我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新

    什么是 rest-api-spring-boot-starter rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规 ...

  4. gulp来处理html、css、js资源啦

    gulp 一般用于处理自动化任务,默认情况无法处理模块化,也不会用于大型项目,但它可以使用各种插件来编译 html.css.js 等资源. 不清楚如何使用 gulp 开启任务的朋友可以参考 gulp使 ...

  5. 【go笔记】使用标准库flag解析命令行参数

    前言 Go语言标准库中提供了一个包flag可以解析命令行参数. 示例代码:文件读取 package main import ( "fmt" "flag" &qu ...

  6. Docker使用教程及常用命令

    Docker是一个开源的应用容器引擎,允许开发者将应用以及依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows上.它非常适用于持续集成与持续交付(CI/CD). 1. 安装 ...

  7. paging组件的用法和意义

    一.Paging组件的意义 分页加载是在应用程序开发过程中十分常见的需求,我们经常需要以列表的方式加载大量的数据,这些数据通常来自网络或本地数据库.然而,如果一次性将所有数据全部加载出来,必然会消耗大 ...

  8. Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档

    Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档, 还支持 xlsx 和 docx 文件的加密(具体使用看文档) ...

  9. Spring Boot虚拟线程与Webflux在JWT验证和MySQL查询上的性能比较

    早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错.内容较长,我就不翻译了,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读. 测试场景 作者采用了一个尽 ...

  10. 记一次 .NET某新能源MES系统 非托管泄露

    一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序有内存泄露,跟着我的错题集也没找出是什么原因,刚好手头上有一个 7G+ 的 dump,让我帮忙看下是怎么回事,既然找到我了那就给他看看吧,不过 ...