MongoDB 文档操作之插入、查询
目录
插入文档
新增单个文档
批量新增文档
测试:批量插入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 文档操作之插入、查询相关推荐
- MongoDB——文档操作(插入文档)
目录 一.新增单个文档 1.1.语法 1.2.示例 二.批量新增文档 2.1.语法 2.2.示例 三.批量插入随机数据 一.新增单个文档 1.1.语法 insertOne 向指定集合中插入单条文档数据 ...
- mongodb文档操作1
mongodb文档操作1 mongodb文档操作1 插入操作 1. 使用方法insert()分别插入以下文档到集合stu中. 2. 使用方法insertMany()插入以下一组文档到集合stu中. 删 ...
- mongodb[三] 文档操作:插入、更新、删除
1.插入文档 语法:db.collectionName.insert(插入内容) 例如: 选择一个库 use demodb 1. 插入一个数据,并且自动创建表数据 db.demo.insert({na ...
- mongodb文档操作
增 #1.没有指定_id则默认ObjectId,_id不能重复,且在插入后不可变#2.插入单条 user0={"name":"egon","age&q ...
- MongoDB——文档操作(更新文档)
目录 一.更新文档命令的格式 二.更新操作符 三.更新单个文档 3.1.更新单个文档的示例 四.更新多个文档 4.1.更新多个文档的概述 4.2.更新多个文档的示例 五.使用upsert命令 5.1. ...
- mongoDB 文档操作_改
mongoDB 更改操作 格式对比 MySQL update table set .... where .... db.collection.updateOne(query,update,upsert ...
- jQuery 属性,css,文档操作
dom对象与jQuery对象的区别 $(function() {// dom 与 jQuery对象间的转换var $txt = $(":input");// jQuery -> ...
- MongoDB文档查询操作(三)
关于MongoDB中的查询,我们已经连着介绍了两篇文章了,本文我们来介绍另外一个查询概念游标. 本文是MongoDB系列的第七篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装Mong ...
- MongoDB文档查询操作(一)
上篇文章我们主要介绍了MongoDB的修改操作,本文我们来看看查询操作. 本文是MongoDB系列的第五篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装MongoDB 2.Mongo ...
- mongodb 输出数组字段_MongoDb文档操作、索引操作
学习主题:MongoDb 学习目标: 掌握mongodb文档的更新 掌握mongodb文档的删除 掌握mongodb文档的查找 掌握mongodb文档的条件操作符 掌握mongodb中的索引操作 Mo ...
最新文章
- Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译
- GitHub年度报告:JS第一,Python第二,Java第三
- 工作中linux定时任务的设置及相关配置
- mysql 5.6 安装教程
- Django实战1-权限管理功能实现-01:搭建开发环境
- 【微软官方文档】Windows终端(Windows Terminal)
- [转载] New Concept English 1——Lesson 7 Are you a teacher?
- 学校计算机教室的用途,录播教室有什么功能,又有哪些用途
- 好用的python表白神器_Python|520表白神器
- [工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息
- 2给我背书_考研村 | 在哪一瞬间,你觉得寄宿考研学校的背书教室真好?
- python需要在linux上运行,在linux上运行python的方法
- 文件保险柜 v2.6 官网
- windows service 2012阿里云服务器在搭建mysql时缺少msvcr100.dll文件解决方案
- Windows 模块安装程序必须更新,才能安装此程序包。 请更新计算机上的 Windows 模块安装程序,然后重试安装。问题解决
- 【kaggle】印度语和泰米尔语问答赛题baseline
- Linux终端Terminal常用快捷键
- 影视剪辑,什么是蒙太奇,蒙太奇的含义
- 一文搞定插入排序算法
- Jimage - 以图搜图