首页 > 其他分享 >MongDB知识点总结

MongDB知识点总结

时间:2023-03-22 11:04:07浏览次数:35  
标签:总结 知识点 MongDB db value 查询 xx 集合 find

MongDB数据库操作

显示所有数据库:show dbs show databases
数据库不需要创建:use student
显示当前所在数据库
db
数据库不需要创建,集合不需要创建,集合中有数据,集合就创建了,数据库就创键了 :show collections;
添加数据 数据是文档的json格式的数据: db.stus.insert()
查询集合,查询所有数据:db.stus.find()

创建库:use 数据库名
查看当前所在数据库,show dbs,show databases
删除数据库:db.dropDatabase()
创建集合:
1.db.集合名 直接创建,
2.db.集合名.insert()创建集合并添加数据
3.db.xx.createCollection(集合名)。可以创建空集合,并且在数据库中显示
字段类型描述
capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。
autoIndexId 布尔 3.2 之后不再支持该参数。(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size 数值 (可选)为固定集合指定一个最大值,即字节数。如果 capped 为 true,也需要指定该字段。
max 数值 (可选)指定固定集合中包含文档的最大数量。

文档的增删改查

增加:
db.cc.insert() 插入文档
db.xx.insertOne() 插入单个文档
db.xx.insertMany() 插入多个文档
db.xx.save() 等价于文档
删除:
db.xx.remove({})
db.xx.deleteMany() 删除符合条件
db.xx.deleteOne()
修改:
db.xx.updata()
db.xx.updateOne()
db.xx.updateMany()
$set {$set:{field:value}}:指定键更新值,不存在创建
$inc {$inc:{field:value}}:对文档某个数字型的键进行增减操作
$unset {$unset:{field:1}} 主要是用来删除键
$push {$push:{field:value}} 向文档某数组添加数组,不考虑重复,键是数组,键不存在则创建。
$pushAll {$pushAll:{field:value_array}} 同$push,一次加多个数据
$addToSet {$addToSet:{field:value}} 加值值不存在才增加
$pop {$pop:{fileld:1}}: 删除数据元素 1.表示从尾部 -1表示删除头部
$pull {$pull}:{field:_value}} 从数组组中删除满足条件的值
$pullAll {$pullAll:value_array} 用法同$pull一样,可以一次性删除多个值
$rename {$rename:{oid_field_name:new_fidld_name}} 对键重新命名
注 %pushall 3.6取消 使用$each修饰符适用于$addToSet操作符和$push操作符
{$addToSet:{<field>:{$each:[<value>,<value>]}}}
{$push:{<field>:{$each:[<value1>,<value2>]}}}
基本查询:
db.collection.find() 查询所有结果
db.xx.count({}) 查询数量
db.xx.find({}).length() 查询结果数量
db.xx.find({}).count()

查询文档:

比较运算符:
比较运算符:
$eq{<field>:{$eq:<value>}}  查找字段的值等于特定值值记录
$gt{<field>:{$gt:value}} 查询大于字段的特定值记录
$get{<field>:{$get:value}} 查询大于等于特定值记录
$lt{<field>:{$lt:value}} 查询小于字段的特定值记录
$lte{<field>:{$lte:value}} 查询小于等于特定值记录
$ne{<field>:{$ne:value}} 查询不等于特定值的记录
逻辑运算符:
逻辑运算符
逻辑与 $and:要有满足所有查询条件,否则返回空
db.集合名.find($and:[{<expression1>,<ex...>}])
逻辑或 $or:满足一个条件就行,只要满足一个条件都可以查出来
db.集合名.find($or:[{<ex...>},{<ex...>}])
逻辑异或 $nor:逻辑或原理取反,只要满足一个条件都可以不查询出来
db.集合.find({$nor:[{<ex..>},{<ex...>}]})
范围查询
范围查询:
$in  在范围内    db.xx.find({age:[12,13]})
$nin 不在范围内  db.xx.find({age:[12,13]})
$not $in 不在范围内 db.xx.find({age:{$not:{$in:[13,13]}}})
$not 不等于  db.xx.find({name:{$not:/^T.*/}});

逻辑非 $not:取反查询条件
db.集合名.find({find:({$not:{operator-expression}})})
等值只能使用:$eq操作符
//逻辑非 db.product1.find({category:{$not:{$eq:"手机"}}})
支持正则(//)
支持正则
使用//或$regex编写正则表达式
   查询姓黄的学生
   db.stu.find({name:/^黄/})
   db.stu.find({name:{$regex:'^黄’}})
  # 模糊查询
   db.test.find({name:/李/})
  # 模糊查询:以"李" 开头
   db.test.find({name:/^李/})
  # 模糊查询:以"李" 结尾
   db.test.find({name:/李$/})
  # 模糊查询:忽略大小写
   db.test.find({name:/stephen?/i})
限制指定条数:跳过指定条数(limit() ,skip())
limit()  用于读取指定文件  db.xx.find().limit()

skip() 用于跳过指定数量的文档  db.xx.find().skip()

limit(),skip() 查询同时使用 无论位置先后 先 skip limit skip 适合小数据量分页,百万级效率会非常低,因为skip方法是一条条数据过去的
db.xx.find().skip().limit()
db.xx.find().limit().skip()
补充自定义查询
使用$where后面写一个函数,返回满足条件的数据查询年龄大于30的

db.xx.find({
$where.function(){
return this.age>30;
})

})
投影:
选择显示字段:
1.显示
0.不显示
常规默认不显示,如果显示使用1,只要_id不显示0

默认返回_id
db.xx.find({},{name:1,age:1})
不返回_id
db.xx.find({},{_id:0,name:1,age:1})
排序:(sort())
方法sort(),用于对集合进行排序
db.集合名称.find().sort({字段:1,...})
参数:1为升序
参数:-1为降序
根据性别降序,在根据年龄升序
db.xx.find().sort({gender:-1,age:1})
统计个数(count())
方法count()用于统计结果中文档条数
db.集合名称.find({条件}).count()
db.集合名称.count({条件})
dn.xx.find({gender:true}).count()
消除去重(distinct())
方法distinct()对数据进行去重
db.集合名称.distinct('去重字段',{条件})

db.xx.distinct("xx",{age:{$gt:18}})
字段是否存在($existis)
$existis 字段是否存在 true 存在 false 不存在
db.test.find({age:{$existis:true}})
值为null,或字段不存在
db.xx.find({age:null})
 

标签:总结,知识点,MongDB,db,value,查询,xx,集合,find
From: https://www.cnblogs.com/yuxiangrui/p/yizhiyuMongDB.html

相关文章

  • 100道python基础题——(1-15总结)
    1.lisi操作①列表更新list[index]②增加元素list.append(element):append是加一个列表的值,列表可以加数字,字符串,列表,元组等list.extend(element):extend是解析一个列......
  • Linux如何查找大文件或目录总结
    [size=large][color=red]如何查找大文件[/color][/size]1.要搜索当前目录下,超过800M大小的文件find.-typef-size+800M2.对文件的信息(例如,文件大小、文件属性)一无......
  • SpringBoot 第二部分知识点
    SpringBoot-第⼆天1.学习目标2Mybatis整合数据访问使用SpringBoot开发企业项目时,持久层数据访问是前端页面数据展示的基础,SpringBoot支持市面上常见的关系库......
  • 每日总结2023/3/21
    今天进行了Android的地铁查询操作,主要是进行了简单的前两步,线路和站点查询,并为Android安装了搜狗输入法,以保障汉字的输入。代码行大概50 优化更改textview使之高度变......
  • 每日总结 3.21
    今天进行了Android的地铁查询操作,主要是进行了简单的前两步,线路和站点查询,并为Android安装了搜狗输入法,以保障汉字的输入。代码行大概50 优化更改textview使之高度变......
  • 3.21学习总结
    2.4.3日期和时间组件(下)分类 Android基础入门教程本节引言:本节我们来继续学习Android系统给我们提供的几个原生的Date&Time组件,他们分别是:DatePicker(日期选择器),Ti......
  • SpringBoot 第一部分知识点
    SpringBoot-第⼀天1.学习目标 2.Spring框架发展史2.1.Spring1.x时代在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不......
  • node学习四之npm知识点
    1.版本号知识点使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本......
  • 第六周星期二每日总结
     今日学习如何将Mysql数据库中的文件导入Androidstudio的SQLite数据库步骤:1.首先在idea中将mysql数据生成.csv后缀的文件(右键表->导入/导出/将数据导出到文件) 2......
  • 每日总结22
          进行了一些数字化,例如: publicStringDaLaBengBaBanDeBeiDiBuDuoBiLuWeng(inta){Stringx;switch(a){case1:x="一号线";break;case2:x="四......