zoukankan      html  css  js  c++  java
  • MongoDB的文档操作总结

    在MongoDB中文档是指多个键及其关联的值有序的放置在一起,实际上指的就是数据

    MongoDB中的文档的数据结构和Json基本一致,所以存储在集合中的数据都是Bson格式,Bson是一种类似于JSON的二进制的存储格式,是Binary JSON的简称

    1、插入文档

    1)插入单个文档

    ①、db.集合名.insert();

    db.dev.insert({title:"bjsxt",description:"it sit",url:www.sxt.com})

    ②、db.集合名.save();

    db.dev.save({title:"bjsxt",description:"it sit",url:www.sxt.com})

    ③、db.集合名.insertOne()

    在MongoDB3.2以后的版本中,提供了insertOne函数用于插入文档

    2)插入多个文档

    向集合中批量插入多个文档时,需要用数组来存放文档

    ①、db.集合名.insert([{},{},{}])

    db.test.insert([{title:'java',tags:['JavaSE','JavaEE','JavaME']},{title:'ORM',tags:['Mybatis','Hibernate']},{title:'Spring',tags:['SpringMVC','SpringBoot','SpringCloud']}])

    clipboard

    ②、db.集合名.insertMany([{},{},{}])

    在MongoDB3.2以后的版本中,提供了insertMany()函数用于插入文档

    3)通过变量新增文档

    Mongo Shell工具允许我们定义变量。所有的变量类型为var类型。也可以忽略变量类型。变量中赋值符号后侧需要使用小括号来表示变量中的值。我们可以将变量作为任意文档插入函数的参数

    语法格式: 变量名 = ({变量名})

    ①、通过变量插入单个文档

    定义一个变量,然后通过插入函数,将该文档插入到集合中

    clipboard

    ②、通过变量批量新增文档

    语法结构 变量名 = ([{},{},{}])

    db.集合名.insertMany(变量名)

    2、更新文档

    MongoDB通过update函数或者save函数来更新集合中的文档

    1)update函数

    update()函数用于更新已存在的文档

    语法:db.集合.update({查询条件},{更新内容},{更新参数(可选)})

    示例:将title为SpringCloud的改为 Spring-Cloud

    db.test.update({title:"springcloud"},{title:"Spring_Cloud"})

    clipboard

    2) 更新操作符

    ①、$set更新操作符

    $set:用来指定一个键并更新键值,若键不存在则创建

    语法:db.collection.update({查询条件},{$set:{更新内容}})

    示例:将title为Spring-Cloud的改为 SpringCloud

    db.test.update( {title:"Spring_Cloud"}, {$set:{title: "SpringCloud"}} )

    clipboard

    示例:将title为SpringCloud的文档添加一个属性num=1

    clipboard

    示例:将所有title为SpringCloud的文档添加属性 size:1000

    clipboard

    ②、$inc操作符

    $inc:可以对文档中某个值为数字型的键进行增减的操作

    示例:将title为SpringCloud的文档的num+1

    clipboard

    ③、$unset操作符

    $unset:主要用来删除键

    示例:删除title为SpringCloud中的num键

    clipboard

    ④、$push操作符

    $push:向文档中的某个数组类型的键添加一个数组元素,不过滤重复的数据。添加时键存在,则要求其值类型必须是数组;键不存在,则创建数组类型的键

    示例:向title为SpringCloud的文档中添加 键为tags,值为['SpringCloud Stream']

    clipboard

    ⑤、$pop操作符

    $pop操作符:删除数据元素,1表示从数组的尾部删除,-1表示从数组的头部删除

    ⑥、pull操作符

    $pull:从数组中删除满足条件的元素

    示例:删除title为SpringCloud文档中 tags中的 SpringCloud Stream

    clipboard

    ⑦、$pullAll操作符

    $pullAll:从数组中删除满足条件的多个元素

    示例: 删除title为java中的 ,tags中的JavaSE和JavaEE

    clipboard

    ⑧、$rename操作符

    $rename:对键进行重新命名

    示例:将title为java的文档中的tags改为tag

    clipboard

    3)使用Save来更新文档

    save方法通过传入的文档来替换已有的文档

    语法:save({文档})

    示例:将上述最后一个文档更新为 tile:SpringData

    clipboard

    3、删除文档

    1)remove()函数

    使用remove函数可以删除集合中指定的文档

    语法:remove({指定删除条件},删除参数(可选参数))

    clipboard

    【注意】

    如果使用的条件在集合中可以匹配到多条数据,那么remove()函数会删除所有满足条件的数据。我们可以在remove()函数中

    给定justOne,表示只删除第一条,在remove函数中给定参数即可

    db.test.remove({title:"SpringData"},1)

    remove()方法不会真正的释放空间。需要执行db.repairDatabase()来回收磁盘空间

    2)deleteOne函数

    deleteOne() 函数是官方推荐的删除文档的方法,该方法只删除满足条件的第一条文档

    db.test.delete({title:"SpringCloud"})

    3)deleteMany()函数

    deleteOne() 函数是官方推荐的删除文档的方法,该方法只删除满足条件的所有文档

    4)删除集合中的所有文档

    ①、remove({})

    ②、deleteMany({})

    4、查询文档

    1)find()函数

    在MongoDB中可以使用find()函数查询文档

    语法格式:find({查询条件(可选)},{指定投影的键(可选)})

    如果未给定参数则表示查询所有数据

    pretty()函数可以使用格式化的方式来显示所有文档

    clipboard

    2)findOne()函数

    findOne()函数只返回满足条件的第一条数据。如果未做投影,则该方法自带格式化功能

    语法:findOne({查询条件(可选)},{指定投影的键(可选)})

    clipboard

    3)MongoDB中的模糊查询

    在MongoDB中可以通过 // ^ $ 实现模糊查询,注意使用模糊查询时查询条件不能放到双引号或者单引号中

    实例:

    查询文档中title值含有a的内容

    clipboard

    查询文档中title以S开头的文档

    ^表示起始位置

    clipboard

    查询文档中title以g结尾的内容

    clipboard

    4)投影操作

    ①、find函数投影操作

    在find函数中,我们可以指定投影键

    语法:find({查询条件},{投影键名:0|1,投影键名:0|1,投影键名:0|1.....})

    clipboard

    过滤掉_id

    clipboard

    5)条件操作符

    条件操作符用于比较两个表达式并从mongoDB集合中获取数据

    语法:find({键:{操作符:条件}})

    ①、$gt 大于操作符

    我们可以使用$gt操作做大于的条件判断。该操作符可以对数字或者日期进行判断

    插入数据

    clipboard

    查询size大于300的文档

    clipboard

    ②、$lt 小于操作符

    查询size小于300的文档

    clipboard

    ③、$gte 大于等于操作符

    查询size大于等于300的文档

    clipboard

    ④、$lte 小于等于操作符

    查询size小于等于300的文档

    clipboard

    ⑤、$eq 等于操作符

    查询size等于300的文档

    clipboard

    ⑥、$ne 不等于操作符

    查询size不等于300的文档

    clipboard

    ⑦、$and 操作符

    我们可以使用$and操作符来表示多条件间的并且关系

    语法:find({$and:[{条件1},{条件2},{条件3}}]})

    如果在查询中给定了多个查询条件,条件之间默认的关系为and关系

    查询size 大于100并且小于300的文档

    clipboard

    使用$and语法

    clipboard

    ⑧、$or 我们可以使用该操作符来表示多条件间的或者关系

    语法:find( { $or:[{条件1},{条件2},....] } )

    ⑨、$and和$or联合使用

    查询title为test5 并且size等于500, 或者size小于200的文档

    clipboard

    ⑩ $type 是基于Bson类型来检索集合中匹配的数据类型

    查找title值为number的文档

    clipboard

    6)分页操作 Limit和skip函数

    ①、Limit函数

    如果需要在MongoDB中读取指定数据的数据记录,可以使用MongoDB的Limit函数,limit函数接受一个数字参数,该参数指定从mongo中读取记录的个数

    语法:db.collection.find().limit(num1)

    clipboard

    ②、skip函数来跳过指定数量的数据

    语法:db.collection.find().limit(num1).skip(num2)

    我们可以使用skip函数和limit函数实现mongoDB分页查询,但是官方并不推荐这样做,因为这样会扫描全部文档,然后再返回结果,效率过低

    7)Mongo排序

    clipboard

    size降序排列

    clipboard

  • 相关阅读:
    一条语句简单解决“每个Y的最新X”的SQL经典问题
    SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql
    SqlServer数据库字典--索引.sql
    SqlServer2005或2008数据库字典--表结构.sql
    SqlServer2000数据库字典--表结构.sql
    sqlserver附加 mdf、ldf的方法(手记)
    收缩数据库 DBCC SHRINKFILE
    日志、字段备注查询、自增ID联系设置、常用存储过程
    常用sql 全记录(添加中)
    python类的继承和多态,获取对象信息
  • 原文地址:https://www.cnblogs.com/houchen/p/14961660.html
Copyright © 2011-2022 走看看