目录

插入文档

新增单个文档

批量新增文档

测试:批量插入50条随机数据

文档查询

条件查询

指定条件查询

查询条件对照表

查询逻辑对照表

查询逻辑运算符

排序&分页

指定排序

分页查询

正则表达式匹配查询


插入文档

新增单个文档

db.collection.insert({"name":"fox"})db.conllection.save()db.collection.insertOne()

writeConcern 决定一个写操作落到多少个节点上才算成功。

writeConcern 的取值包括:

  • 0:发起写操作,不关心是否成功;
  • 1~集群最大数据节点数:写操作需要被复制到指定节点数才算成功;
  • majority:写操作需要被复制到大多数节点上才算成功。

进入appdb

  • insert:若插入的数据主键已经存在,则会抛 DuplicateKeyException 异常,提示主键重复,不保 存当前数据。
  • save: 如果 _id 主键存在则更新数据,如果不存在就插入数据。

  • insertOne()

批量新增文档

db.collection.insertMany()

  • writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
  • ordered:指定是否按顺序写入,默认 true,按顺序写入。

  • insert和save也可以实现批量插入(使用集合)

测试:批量插入50条随机数据

编辑脚本book.js

var tags = ["nosql","mongodb","document","developer","popular"];
var types = ["technology","sociality","travel","novel","literature"];
var books=[];
for(var i=0;i<50;i++){var typeIdx = Math.floor(Math.random()*types.length);var tagIdx = Math.floor(Math.random()*tags.length);var favCount = Math.floor(Math.random()*100);var book = {title: "book-"+i,type: types[typeIdx],tag: tags[tagIdx],favCount: favCount,author: "xxx"+i};books.push(book)
}
db.books.insertMany(books);

先exit退出,后

db.books.find()

文档查询

使用find 查询集合中的若干文档。语法如下

db.collection.find(query,projection)
  • query : 可选,查询条件
  • projection : 可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参 数即可(默认省略)。 投影时,id为1的时候,其他字段必须是1;id是0的时候,其他字段可以是 0;如果没有_id字段约束,多个其他字段必须同为0或同为1。

查询novel类的文档

db.books.find({type:"novel"})

findOne查询集合中的第一个文档。

db.collection.findOne(query, projection)

条件查询

指定条件查询

#查询带有nosql标签的book文档:
db.books.find({tag:"nosql"})
#按照id查询单个book文档:
db.books.find({_id:ObjectId("61caa09ee0782536660494d9")})
#查询分类为“travel”、收藏数超过60个的book文档:
db.books.find({type:"travel",favCount:{$gt:60}})

查询条件对照表

SQL MQL
a = 1 {a: 1}
a <> 1 {a: {$ne: 1}}
a > 1 {a: {$gt: 1}}
a >= 1 {a: {$gte: 1}}
a < 1 {a: {$lt: 1}}
a <= 1 {a: {$lte: 1}}

查询逻辑对照表

SQL MQL
a = 1 AND b = 1 {a: 1,b: 1} 或 {$and: [{a: 1},{b: 1}]}
a = 1 OR b = 1 {$or: [{a: 1},{b: 1}]}
a IS NULL {a: {$exists: false}}
a IN (1,2,3) {a: {$in: [1, 2, 3]}}

查询逻辑运算符

  • $lt: 存在并小于
  • $lte: 存在并小于等于
  • $gt: 存在并大于
  • $gte: 存在并大于等于
  • $ne: 不存在或存在但不等于
  • $in: 存在并在指定数组中
  • $nin: 不存在或不在指定数组中
  • $or: 匹配两个或多个条件中的一个
  • $and: 匹配全部条件

排序&分页

指定排序

使用 sort() 方法对数据进行排序

#指定按收藏数(favCount)降序返回
db.books.find({type:"travel"}).sort({favCount:-1})

分页查询

skip用于指定跳过记录数,limit则用于限定返回结果数量。可以在执行find命令的同时指定skip、limit 参数,以此实现分页的功能。

#跳过前八条,查看四条
db.books.find().skip(8).limit(4)

正则表达式匹配查询

MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。

//使用正则表达式查找type包含 so 字符串的book
db.books.find({type:{$regex:"so"}})
//或者
db.books.find({type:/so/})

MongoDB 文档操作之插入、查询相关推荐

  1. MongoDB——文档操作(插入文档)

    目录 一.新增单个文档 1.1.语法 1.2.示例 二.批量新增文档 2.1.语法 2.2.示例 三.批量插入随机数据 一.新增单个文档 1.1.语法 insertOne 向指定集合中插入单条文档数据 ...

  2. mongodb文档操作1

    mongodb文档操作1 mongodb文档操作1 插入操作 1. 使用方法insert()分别插入以下文档到集合stu中. 2. 使用方法insertMany()插入以下一组文档到集合stu中. 删 ...

  3. mongodb[三] 文档操作:插入、更新、删除

    1.插入文档 语法:db.collectionName.insert(插入内容) 例如: 选择一个库 use demodb 1. 插入一个数据,并且自动创建表数据 db.demo.insert({na ...

  4. mongodb文档操作

    增 #1.没有指定_id则默认ObjectId,_id不能重复,且在插入后不可变#2.插入单条 user0={"name":"egon","age&q ...

  5. MongoDB——文档操作(更新文档)

    目录 一.更新文档命令的格式 二.更新操作符 三.更新单个文档 3.1.更新单个文档的示例 四.更新多个文档 4.1.更新多个文档的概述 4.2.更新多个文档的示例 五.使用upsert命令 5.1. ...

  6. mongoDB 文档操作_改

    mongoDB 更改操作 格式对比 MySQL update table set .... where .... db.collection.updateOne(query,update,upsert ...

  7. jQuery 属性,css,文档操作

    dom对象与jQuery对象的区别 $(function() {// dom 与 jQuery对象间的转换var $txt = $(":input");// jQuery -> ...

  8. MongoDB文档查询操作(三)

    关于MongoDB中的查询,我们已经连着介绍了两篇文章了,本文我们来介绍另外一个查询概念游标. 本文是MongoDB系列的第七篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装Mong ...

  9. MongoDB文档查询操作(一)

    上篇文章我们主要介绍了MongoDB的修改操作,本文我们来看看查询操作. 本文是MongoDB系列的第五篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装MongoDB 2.Mongo ...

  10. mongodb 输出数组字段_MongoDb文档操作、索引操作

    学习主题:MongoDb 学习目标: 掌握mongodb文档的更新 掌握mongodb文档的删除 掌握mongodb文档的查找 掌握mongodb文档的条件操作符 掌握mongodb中的索引操作 Mo ...

最新文章

  1. Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译
  2. GitHub年度报告:JS第一,Python第二,Java第三
  3. 工作中linux定时任务的设置及相关配置
  4. mysql 5.6 安装教程
  5. Django实战1-权限管理功能实现-01:搭建开发环境
  6. 【微软官方文档】Windows终端(Windows Terminal)
  7. [转载] New Concept English 1——Lesson 7 Are you a teacher?
  8. 学校计算机教室的用途,录播教室有什么功能,又有哪些用途
  9. 好用的python表白神器_Python|520表白神器
  10. [工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息
  11. 2给我背书_考研村 | 在哪一瞬间,你觉得寄宿考研学校的背书教室真好?
  12. python需要在linux上运行,在linux上运行python的方法
  13. 文件保险柜 v2.6 官网
  14. windows service 2012阿里云服务器在搭建mysql时缺少msvcr100.dll文件解决方案
  15. Windows 模块安装程序必须更新,才能安装此程序包。 请更新计算机上的 Windows 模块安装程序,然后重试安装。问题解决
  16. 【kaggle】印度语和泰米尔语问答赛题baseline
  17. Linux终端Terminal常用快捷键
  18. 影视剪辑,什么是蒙太奇,蒙太奇的含义
  19. 一文搞定插入排序算法
  20. Jimage - 以图搜图

热门文章

  1. ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
  2. 申请数据库资源池的三种方式(Map,properties)
  3. SpringCloud Netflix—微服务架构
  4. Shopee平台如何实现多店铺管理?虾扑erp实现智能管理!
  5. 如何用jQuery访问后台API,实现真正的前后端分离
  6. matlab命令行窗口显示长度设置_MATLAB的命令窗口、图形窗口
  7. 在Android上加载具有AI危害检测的TensorFlow模型
  8. 一分钟快速制作电子签名
  9. C 类IP 地址,连接6 个子公司
  10. SDK数据采集抓取精准主要