前面的话

  本文将详细介绍MongoDB数据库关于文档的增删改查

插入文档

  要将数据插入到 MongoDB 集合中,需要使用 MongoDB 的 insert()save()方法,还有insertOne()或insertMany()方法

【insert()】

  insert()命令的基本语法如下

db.COLLECTION_NAME.insert(document)

  在插入的文档中,如果不指定_id参数,那么 MongoDB 会为此文档分配一个唯一的ObjectId。_id为集合中的每个文档唯一的12个字节的十六进制数

  _id,又称为ObjectId是一个12字节的BSON类型字符串。按照字节顺序依次代表:

  4字节:UNIX时间戳

  3字节:表示运行MongoDB的机器

  2字节:表示生成此_id的进程

  3字节:由一个随机数开始的计数器生成的值

  如果数据库中不存在集合,则MongoDB将创建此集合,然后将文档插入到该集合中

  要在单个查询中插入多个文档,可以在insert()命令中传递文档数组

  [注意]使用insert()插入多个文档时,很容易出现问题。最好使用insertMany()方法插入

  可以使用js语法,插入多个文档

【save()】

  插入文档也可以使用db.post.save(document)。 如果不在文档中指定_id,那么save()方法将与insert()方法一样自动分配ID的值。如果指定_id,则将以save()方法的形式替换包含_id的文档的全部数据。

  也就是说save()方法和insert()方法的区别是,save()方法可以复写或修改,而insert()方法不可以

db.post.save(document)

【insertOne()】

  使用db.collection.insertOne()方法可以将单个文档插入到集合中

【insertMany()】

  使用db.collection.insertMany()方法可以将多个文档插入到集合中

查询文档

【find()】

  要从MongoDB集合查询数据,需要使用MongoDB的find()方法,默认返回结果中的前20条文档,输入"it"显示接下来的20条文档。

  find()命令的基本语法如下:

db.COLLECTION_NAME.find(document)

  find()方法将以非结构化的方式显示所有文档

  可以限定查询条件

  可以通过find 的第二个参数来指定返回的键,值为1或true表示显示该键,值为0或false表示不显示该键

  find()方法下的count()方法可以显示符合条件的文档数量

【findOne()】

  findOne()方法只返回一个文档,该文档是最早被添加的文档

【比较操作符】

小于        {<key>:{$lt:<value>}}
小于或等于 {<key>:{$lte:<value>}}
大于    {<key>:{$gt:<value>}}
大于或等于 {<key>:{$gte:<value>}}
不等于   {<key>:{$ne:<value>}}
等于    {<key>:{$eq:<value>}}

  取得x小于2的值

  取得x大于等于2的值

  取得x不等于2的值

【逻辑操作符】

  可以使用逻辑操作符$and、$or来表示与、或

{ $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
{ $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }

【正则表达式】

  文档查询可以使用正则表达式,但只支持字符串类型的数据

【$where】

  $where操作符功能强大而且灵活,它可以使用任意的JavaScript作为查询的一部分,包含JavaScript表达式的字符串或者JavaScript函数

  使用字符串

  使用函数

限制与跳过

【limit()】

  如果需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数

  默认返回结果中的前20条文档,输入"it"显示接下来的20条文档

  如果没有指定limit()方法中的参数则显示集合中的所有数据

db.COLLECTION_NAME.find().limit(NUMBER)

【skip()】

  可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数

db.COLLECTION_NAME.find().skip(NUMBER)

排序

【sort()】

  在MongoDB中使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列

db.COLLECTION_NAME.find().sort({KEY:1})

更新文档

  MongoDB 使用update()或save()方法来更新集合中的文档

【update()】

  update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update(<query>,<update>,{upsert:<boolean>, multi: <boolean>,writeConcern:<document>})
query : update的查询条件,类似sql update查询内where后面的
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
writeConcern :可选,抛出异常的级别

  [注意]经过测试,upsert参数无法设置为true或者false,都可以插入新的字段

  mongodb默认只更新找到的第一条记录,将x:1,更新为x:10

  要特别注意的是,如果不使用$set,则将文档的内容替换为x:10

  更新全部记录,将x:10,更新为x:1

  mongodb默认只添加到更新找到的第一条记录,将x:1的记录,添加z:1

  将找到的x:2的全部记录,添加z:2

【save()】

  save()方法可以插入或更新文档,如果参数中的文档的_id与集合中所存在的_id都不同,则插入;如果相同,则更新

删除文档

  MongoDB remove()函数是用来移除集合中的数据

【remove()】

  默认地,mongodb删除符合条件的所有文档

db.collection.remove(<query>,{justOne: <boolean>, writeConcern: <document>})
query :删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。

  只删除符合条件的第一个文档 

  删除符合条件的所有文档 

MongoDB数据库文档操作的更多相关文章

  1. MongoDB入门---文档操作之增删改

    之前的两篇文章,已经分享过关于MongoDB的集合还有数据库的各种操作,接下来就涉及到最主要的喽,那就是数据方面的操作,在这里叫做文档操作.话不多说,大家来看正文.     首先来看一下它的数据结构: ...

  2. MongoDB (八) MongoDB 文档操作

    一. MongoDB 插入文档 insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法 insert() 命令的基 ...

  3. MongoDB的文档、集合、数据库(二)

    为了理解MongoDB的名词,可以将其于关系型数据库进行对比: 一.文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个 ...

  4. mongodb安装,库操作,集合操作(表),文档操作(记录)

    安装 1.下载地址 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi 2.如果报没 ...

  5. MongoDB系列---集合与文档操作03

    MongoDB-——Collection 学习大纲: 1.集合操作 2.文档操作 知识回顾: 上一篇我们讲述了如何对MongoDB的权限和用户进行日常的基本操作,来达到我们对数据库的基本安全保障. 一 ...

  6. mongoDB文档操作【增删改】

    MongoDB 插入文档 文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON. 插入文档 Mo ...

  7. mongodb查询文档

    说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...

  8. 第一篇:一天学会MongoDB数据库之Python操作

    本文仅仅学习使用,转自:https://www.cnblogs.com/suoning/p/6759367.html#3682005 里面新增了如果用用Python代码进行增删改查 什么是MongoD ...

  9. 【C#附源码】数据库文档生成工具支持(Excel+Html)

    [2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...

随机推荐

  1. 浅谈C语言指针

    下面就几种情况讨论指针. 一.指针和变量 变量是存储空间的别名,访问形式是直接访问. 指针访问内存地址是间接访问. 使用指针访问内存的场合:1.局部变量,参数传递    2.动态分配内存 指针本身也是 ...

  2. 运行容器的最佳实践 - 每天5分钟玩转 Docker 容器技术(24)

    按用途容器大致可分为两类:服务类容器和工具类的容器. 1. 服务类容器以 daemon 的形式运行,对外提供服务.比如 web server,数据库等.通过 -d 以后台方式启动这类容器是非常合适的. ...

  3. Java学习之J2EE

    什么是J2EE  本文摘抄于其他博文. 什么是J2EE 一.准备篇 1 什么是J2EE?它和普通的Java有什么不同?答:J2EE全称为Java2 Platform Enterprise Editio ...

  4. javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  5. yield详解

    生成器generator 一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就会变成生成器 yeild能暂时的保留函数的运行位置,每次 ...

  6. Windows窗口的尺寸和位置

    介绍 窗口的大小和位置表示为一个矩形边界,该矩形的坐标是相对于屏幕或父窗口而言的.顶级窗口的坐标是相对于屏幕的左上角而言的,子窗口的坐标则是相对于父窗口的左上角而言.应用程序创建窗口时(CreateW ...

  7. string services

    string通用字符串操作: re,正则表达式 difflib,比较序列 stringIO:以文件的方式来读和写字符串 CstringIO:更快捷的stringIO版本 textwrap:文本包装和填 ...

  8. scala环境配置+hello world!

    下载地址: http://www.scala-lang.org/download/ 我下载的是zip 配置环境变量 需要jdk支持,jdk的安装配置此处略过 控制台命令 scala -version ...

  9. 怎么用jq封装插件

    怎么用jq封装插件 以隔行变色为例 实现原理:1.找到表格的奇偶行,然后添加不同的class,激活行高亮显示也很简单,只要判断mouseover事件,然后添加一个class,mouseout的时候,再 ...

  10. linux开机启动smb服务

    修改/etc/rc.local文件(增加红色部分) [root@localhost ~]# cat /etc/rc.local #!/bin/sh## This script will be exec ...