MongoDB一键启动

本文介绍了MongoDB,一种基于分布式文件存储的NoSQL数据库,重点讲解了其文档存储格式BSON的优势、数据库、集合和文档结构,以及CRUD操作、查询、更新和删除的基本指令和示例。
摘要由CSDN通过智能技术生成

简介

什么是MongoDB

MongoDB是一个基于分布式文件存储的NoSQL数据库,基于C++语言开发而成的。它以文档存储格式(BSON)为基础,是由字段和值对组成的数据结构

{
  name: "spella",
  age: 18,
  skill: ["java","vue"]
}

扩展:

BSON(Binary JSON)是一种二进制表示的JSON格式。它与JSON类似,是一种文本的数据交换格式。相比JSON,BSON具有以下优势:

  • 二进制表示的JSON格式,使存储相同数据时,BSON需要的字节数更少,利于大规模数据的存储和传输;

  • 支持更多数据类型;

  • 支持嵌套文档和数组的表示,可更灵活地组织和表示复杂的数据结构。

MongoDB的逻辑结构 

  • 数据库(database):一个仓库,里面存放集合。

  • 集合(collection):类似于数组,在集合中可以存放文档。

  • 文档(document):文档数据库中的最小单位,存储和操作的内容都是文档。

Mongo数据类型 

基本操作

在MongoDB中,数据库和集合不需要手动创建。当创建文档时,如果文档所在的集合或数据库不存在,数据库会自动创建 

基本指令

(1)查看当前所有数据库列表

show dbs/databases

(2) 进入到指定的数据库

use 数据库名

(3)查询当前所处的数据库

db 

(4)显示我们数据库中所有的集合

show collections 

(5) 清屏

cls

CRUD操作

插入操作

(1)插入一个文档到集合中:db.collection.insertOne({field:value})。

db.collection.insertOne({field:value})

(2)插入多个文档到集合中:db.collection.insertMany([{field:value}])。

db.collection.insertMany([{field:value}])

(3)插入一个或多个文档到集合中:db.collection.insert()。

db.collection.insert()

(4)批量添加两万条数据的性能高,尽量少调用系统的方法。

var arr=[]; 
for(var i=1;i<=20000;i++){ 
    arr.push({num:i}); 
}
db.test.insert(arr);

查询操作

(1)查询集合中的数据:db.collection.find()  。

db.collection.find()

(2)限制查询返回结果的数量:limit(Integer id)。

db.users.find().limit(Integer id)

(3)排序查询结果,排序规则1表示升序,-1表示降序:sort({field: [1|-1] })。

db.users.find().sort({age:1})

(4)跳过指定数量的数据:skip(Integer id)  。

db.users.find().sort({age:1}).limit(2).skip(1)

(1)分页功能实现一般使用skip函数和limit函数。skip( (页码-1)*每页显示的条数 ).limit(每页显示的条数) 

(2)MongoDB中skip、limit、sort无论怎么组合使用,执行顺序都是sort>skip>limit;

(5)条件查询:find({field: value})。

db.users.find({age:18})

查询满足条件的一条数据:findOne({field: value})  

(6)指定查询条件和返回字段:find(field: value}, {field: [0|1]) 。

db.users.find({age:18},{name:1,age:1})

第二个参数用于设置查询结果的投影,属性对应的值1表示返回字段,0表示不返回字段。如果没指定属性_id不返回,则数据库会自动返回_id

(7)比较两个数:$gt大于,$lt小于,$eq等于,$gte大于等于,$lte小于等于。

db.users.find({age:{$gt:20}}) //查询age大于20的数据

db.users.find({age:{$lt:20}}) //查询age小于20的数据

db.users.find({age:{$eq:20}}) //查询age等于20的数据

(8)查询某个字段的值是否在数组中:$in在,$nin不在

db.users.find({age:{$in:[17,18]}})

db.users.find({age:{$nin:[17,18]}})

(9)判断某个字段是否存在:$exists 

$exists对应的值0或false表示不存在,1或true表示存在。

db.users.find({age:{$exists:0}})

(10)复杂查询:and、or、not

    1)逻辑与:$and: [{field: value}, {field: value}]

db.users.find($and:[{age:{$gte:18},{age:{$lte,20}}])

    2)逻辑或:$or: [{field: value}, {field: value}]

db.users.find($or:[{age:{$gte:18},{age:{$lte,20}}])

    3)逻辑非:$not: {field: value}

db.users.find($not:[{age:{$gte:18},{age:{$lte,20}}])

(11)正则表达式:$regex: /表达式/

db.users.find({name:{$regex:/张/}})

(12)忽略大小写:$options: “i”

db.users.find({name:{$regex:/Ker/,$options:"i"}})

(13)统计文档数量:db.collection.countDocuments()

db.users.countDocuments({age:{$eq:18}})

(14)统计查询数据的数量:db.collection.find().count()

db.collection.find().count()

(15)查询表中属性去重后的数据:db.collection.distinct(field)

db.collection.distinct("age")

更新操作

(1)更新数据

  • 更新满足条件的一条数据:updateOne({field: value}, {field: value}) 

  • 更新满足条件的多条数据:updateMany({field: value}, {field: value})

  • 更新满足条件的一条或多条数据:updateMany({field: value}, {field: value})

注意:第一个参数用于找要更新的对象;第二参数表示要更新的文档对象的值。如果更新的字段不存在,则数据库会自动创建这个字段。

(2)用来修改文档中的指定属性:$set: {field: value}

db.users.updateOne({name:"张三"},{$set:{age:19}})

(3)用来删除文档的指定属性:$unset: {field: value}

db.users.update({age:23},{$unset:{sex:"男"}})

(4)用于向数组中添加一个新的元素:$push(可重复添加)

db.users.update({age:23},{$push:{sex:"男"}})

(5)向数组中添加一个新元素:$addToSet(不可重复添加)

db.users.update({age:23},{$addToSet:{"favor":"java"}})

(6)替换一个符合条件的文档对象:db.collection.replaceOne({field:value}, {field:value})

db.users.replaceOne({name:"张三"},{name:"李四",age:20,sex:"男"})

扩展:

  • MongoDB的文档的属性值也可以是一个文档,当一个文档的属性值是文档时,我们称这个文档为内嵌文档

  • MongoDB支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过 . 的形式来匹配,且属性名必须使用引号(双引号单引号都行)。比如:db.users.find("hobby.movies":"hero")。

 删除操作

(1)删除数据

满足条件的一条数据:deleteOne({field:value})

db.users.deleteOne({name:'李四'})

 删除满足条件的多条数据:db.collection.deleteMany({field:value}) 

db.users.deleteMany({name:'李四'},{age:18})

(2)删除数据库的集合:db.collection.drop() 

show collections

db.users.drop()

(3)删除当前所在数据库 :db.dropDatabase() 

如果最后一个集合没了,数据库也就没了!

  • 34
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小码夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值