MongoDB基础

MongoDB简介

  • MongoDB是为快速开发互联网Web应用而设计的数据库系统
  • 极简、灵活,是web应用栈的一部分
  • MongoDB的数据模型是面向文档的,所谓文档就是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各式各样的JSON,(还可以存BSON,就是二进制流,也就是说可以存储图片的二进制流)

三个概念

  • 数据库(database)

数据库是一个仓库,在仓库中可以存放集合。

  • 集合(collection)

集合类似于数组,在集合中可以存放文档。

  • 文档(document)

文档数据库中的最小单位,我们存储和操作的内容都是文档。

基本操作

  • 基本指令
show dbs:显示当前所有数据库

show database:显示当前所有数据库

use 数据库名:进入到指定的数据库中(可以不存在)

db:表示我们当前所处的数据库

show collections:显示我们数据库中所有的集合

插入数据

命令:db.collection.insert()
collection是集合的名字,使用方法如下:
db.stus.insert([
    {name:'pzf',age:18,gender:'man'},
    {name:'pzf',age:18,gender:'man'},
    {name:'pzf',age:18,gender:'man'},
])

可以插入单挑数据,也可以插入多条数据(用数组的方式)
插入之后执行db.collection.find()

db.stus.find()

在这里插入图片描述

可以看到插入的新数据。

  • _id是什么?
    当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动给文档添加_id。
    该属性用来作为文档的唯一标识。
    _id可以自己指定,如果我们指定了,数据库就不会再添加了,如果自己指定_id必须也确保唯一性。

插入的时候还可以使用语义化比较明确的两个方法
db.collection.insertOne():插入一个文档对象,传入一个对象
db.collection.insertMany():插入多个文档对象,传入一个对象数组

查询数据

使用命令:db.collection.find()

find()用来查询集合中所有符合条件的文档,可以接收一个对象作为条件参数。
示例如下:

db.stus.find({name:'pzf'})

在这里插入图片描述

{ }:表示所有文档
{ 属性:值 }:查询属性是指定值的文档,返回值是一个数组
db.collection.findOne():用来查询集合中符合条件的第一个文档,返回的是一个文档,也就是一个对象,所以可以在后面加上.字段名,来取数据,如:db.stus.findOne({name:‘pzf’}).name
db.stus.find({}).count():查询所有结果的数量

更新数据

命令:db.collection.update(查询条件,新对象)
update()默认情况下会使用新对象来替换旧对象
update()默认只会修改一个对象
所以一般我们不直接执行这个命令。
如果需要修改指定的属性,而不是替换,需要使用 “修改操作符” 来完成修改

$set:可以用来修改文档中的指定属性
$unset:可以用来删除文档的指定属性

如:

db.stus.update({name:'zyy'}, 
    {$set:{age:66}}, 
)

update默认只修改第一个符合条件的数据

db.collection.updateMany():同时修改多个符合条件的文档

db.collection.updateOne():修改一个符合条件的文档

db.collection.replaceOne():替换一个符合条件的文档

$push:用于向数组中添加一个新的元素

$addToSet:向数组中添加一个新元素(类似于向set集合中添加,如果数组中已经存在了该元素,则添加失败,因为不可重复)

db.stus.update({name:'pzf'}, 
    {$set:{age:99}}, 
    { multi: true, upsert: false}
)   

完整的update其实有三个对象参数,第三个对象表示:
对于upsert(默认为false):如果upsert=true,如果query找到了符合条件的行,则修改这些行,如果没有找到,则追加一行符合query和obj的行。如果upsert为false,找不到时,不追加。
对于multi(默认为false): 如果multi=true,则修改所有符合条件的行,否则只修改第一条符合条件的行。

删除数据

命令:db.collection.remove()
可以根据条件来删除文档,传递条件的方式和find()一样
能删除符合条件的所有文档,默认删除多个
如果第二个参数传递一个true,则只会删除一个
如果只传递一个{ }作为参数,则会删除集合中的所有文档

查询操作符

//查询numbers中num大于5000的文档
db.unmbers.find({num:{$gt:500}})

//查询numbers中num小于30的文档
db.unmbers.find({num:{$lt:500}})

//查询numbers中num大于40小于50的文档
db.numbers.find({num:{$gt:40,$lt:50}})

//查询numbers前10条的数据
db.numbers.find({num:{$lte:10}})

//limit()设置显示数据的上限
db.numbers.find().limit(10)

//查询numbers中第11条到20条的数据
	//skip()用于跳过指定数量的数据   skip( (页码-1)*每页显示的条数 ).limit(每页显示的条数)
	//MongoDB会自动调整limit()和skip()的位置
db.numbers.find().skip(10).limit(10)
db.numbers.find().limit(10).skip(10)

Sort排序

find()查询文档时,默认情况是按照_id的值进行升序排列

sort()可以用来指定文档的排序的规则,需要传递一个属性来指定排序规则,1表示升序,-1表示降序

db.users.find({}).sort({sale:1})
db.users.find({}).sort({sale:1,qq:1}) //先指定sale的升序 再qq的降序

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值