mongodb简单使用

mongodb简单使用


观看该操作前建议先了解 mongodb安装以及权限配置

一、简单认识mongodb

1.1、简单介绍:

MongoDB是一个NoSQL的数据库,是一款文档型数据库,数据库指的就是一个存储数据的仓库,数据库可以使我们完成对数据的持久化的操作。MongoDB数据库中存储的数据的基本单位就是文档,MongoDB中存储的就是文档,所谓文档其实就是一个JSONMongoDB中的JSON我们称为BSON,比普通的JSON的功能要更加的强大
MongoDB数据库使用的是JavaScript进行操作的,在MongoDB含有一个对ES标准实现的引擎,在MongoDB中所有ES中的语法中都可以使用。

MongoDB并不需要创建数据库和文档,直接使用use 数据库名的方式就OK,如果该数据库不存在就自动创建,如果存在就直接切换到该数据库。

1.2、三个概念

  • 数据库database

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

  • 集合collection

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

  • 文档document

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

1.3、基本概念

  • 文档document

类似于JS中的对象,在MongoDB中每一条数

据都是一个文档

  • 集合collection

集合就是一组文档,也就是集合是用来存放文 档的集合中存储的文档可以是各种各样的,没有格 式要求多个文档组成集合,多个集合组成数据库。

在这里插入图片描述

一个大的MongoDB数据库服务器里面可以创建Nmongodb数据库,而每个MongoDB有可以创建N个集合collection,每个集合中存储N个文档,文档是MongoDB的最小单位。

二、数据库基本指令

  • 显示当前的所有数据库
show dbs
或者
show databases
  • 进入到指定的数据库中

如果该数据库没有,那么会自动创建该数据库。

use 数据库名
  • db表示的是当前所处的数据库
db
  • 显示数据库中所有的集合
show collections

三、 MongoDB的CRUD的操作

3.1、插入文档

db.<collection>.insert()向集合中插入一个或多个文档,当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识 _id。我们可以自己指定,如果我们指定了数据库就不会在添加了,如果自己指定_id也必须确保它的唯一性。

  • 向数据库中插入文档
db.<collection>.insert()
  • 插入一个文档对象
db.<collection>.insertOne()
  • 插入个文档对象
db.<collection>.insertMany()
  • 范例:

    test数据库中的stus集合插入一个学生对象。当前test数据库没有,更没有stus集合。

db ; //admin

//db表示当前当前数据库
db.stus.insert({name:"小男孩",age:18,gender:"男"}) 
db.stus.insert({name:"猪八戒",age:28,gender:"男"});

//指定 _id插入
db.stus.insert({_id:"hello",name:"猪八戒",age:28,gender:"男"});

//插入多个对象
db.stus.insert([
    {name:"沙和尚",age:38,gender:"男"},
    {name:"白骨精",age:16,gender:"女"},
    {name:"蜘蛛精",age:14,gender:"女"}
]);

//查询全部
db.stus.find(); 

//生成一个 _id
ObjectId() ;
  • insert()insertOne()insertMany()的区别

其实后两个方法都可以使用 insert()方法代替,只是后两个在语义上更加清晰,能够一眼看出你操作的对象是几个,时候和 insert()一样。

3.2、查询文档

  • 查询所有
db.collection.find ()

这里的 find()返回的是一个数组

  • 查询数组中第一个数据
db.collection.findOne()

findOne()返回的是一个对象。

  • 查询全不数据条数
db.collection.find({}).count();
或者
db.stus.find().itcount() ;

这里的 find() 表示没有条件查询, find({})带上一个空条件查询,这两者的写法一样。

3.2.1、简单的条件查询

直接在 find() 或者 findOne()中直接写入Bson对象作为条件

  • 范例:
//查询当前数据库中”stus“集合的所有
db.stus.find(); 
//查询当前数据库中“stus”集合的 “_id=Hello”的所有数据
db.stus.find({_id:"hello"});
//查询当前数据库中“stus”集合的 “age=16" 并且 "name= 白骨精"的所有数据
db.stus.find({age:16 , name:"白骨精"});
//查询“age=28”的所有数据
db.stus.find({age:28});
//查询 “age=28”的第一个条数据
db.stus.findOne({age:28});
//统计当前数据库中 "stus"集合的所有数据条数
db.stus.find({}).count();

3.3、删除文档

  • 删除一个或多个,默认删除多个,删除一个或多个,可以第二个参数传递一个true,则只会删除一个
db.collection.remove()

注意: remove()必须传递条件,如果 db.stus.remove({})你直接写成这样,会将这个集合中的所有数据都删除,但是效率稍微有点低,但是集合还在。

例如:

删除第一个“name:蜘蛛精”

db.stus.remove({name:"蜘蛛精"},true)
  • 删除一个数据
db.collection.deleteOne()
  • 删除多个数据
db.collection.deleteMany()
  • 删除集合
db.collection.drop()
  • 删除数据库
db.dropDatabase()

注意:如果一个数据库中没有集合,那么这个数据库也就不存在了。

3.4、修改文档

update()默认情况下会使用新对象来替换旧的对象,如果需要修改指定的属性,而不是替换需要使用“修改操作符”来完成修改。

  • 修改多个或者一个
db.collection.update()

**注意:**update()默认只会修改一个

如果要想修改多个,必须在增加 multi:true属性。

例如:将全部 "name=猪八戒"的 address属性设置为: address:"呵呵呵",该属性如果存在就修改,不存在就创建。

db.stus.update(
    {"name" : "猪八戒"},
    
    {
        $set:{
        address:"呵呵呵"
        }
    }  ,
    {
        multi:true
    }    
)
  • 修改多个
db.collection.updateMany()
  • 修改一个
db.collection.updateOne()
  • 替换一个文档
db.collection.replaceOne()
  • 使用方法
db.collection.update(查询条件,新对象)

3.4.1、简单的修改操作符

  1. $set 可以用来修改文档中的指定属性
  2. $unset 可以用来删除文档的指定属性
  • 范例:

当前数据

{ "_id" : ObjectId("5de5d2560eb009ec0e93d64d"), "name" : "小男孩", "age" : 18, "gender" : "男" }
{ "_id" : ObjectId("5de60a435bedf1ed7fbd96ce"), "name" : "猪八戒", "age" : 28, "gender" : "男" }
{ "_id" : "hello", "name" : "猪八戒", "age" : 28, "gender" : "男" }
{ "_id" : ObjectId("5de60a9d5bedf1ed7fbd96cf"), "age" : 28 }
{ "_id" : ObjectId("5de60a9d5bedf1ed7fbd96d0"), "name" : "白骨精", "age" : 16, "gender" : "女" }
{ "_id" : ObjectId("5de60a9d5bedf1ed7fbd96d1"), "name" : "蜘蛛精", "age" : 14, "gender" : "女" }
{ "_id" : ObjectId("5de60e275bedf1ed7fbd96d3"), "name" : "猪八戒", "age" : 28, "gender" : "男" }
{ "_id" : ObjectId("5de60e455bedf1ed7fbd96d4"), "age" : 28 }
{ "_id" : ObjectId("5de60e455bedf1ed7fbd96d5"), "name" : "白骨精", "age" : 16, "gender" : "女" }
{ "_id" : ObjectId("5de60e455bedf1ed7fbd96d6"), "name" : "蜘蛛精", "age" : 14, "gender" : "女" }
{ "_id" : ObjectId("5de61b865bedf1ed7fbd96d7"), "name" : "沙和尚", "age" : 38, "gender" : "男" }
{ "_id" : ObjectId("5de61b865bedf1ed7fbd96d8"), "name" : "白骨精", "age" : 16, "gender" : "女" }
{ "_id" : ObjectId("5de61b865bedf1ed7fbd96d9"), "name" : "蜘蛛精", "age" : 14, "gender" : "女" }

1、修改“沙和尚”的年龄为28

db.stus.update({name:"沙和尚"},{age:28});

注意:update(查询条件,修改后的数据)默认只会修改第一个,并且上面这条命令是直接将新的对象替换掉原来的对象。直接这样只执行,后面的 namegender属性都没有了。

如果只想修改”沙和尚“的age等于28,而其他字段不更改的情况,需要这样修改。

db.stus.update({name:"沙和尚"},{$set:{age:28}})

2、修改 _id等于 5de60e275bedf1ed7fbd96d3gender等于"男",添加 address字段,并且设置该字段值为: address:“流沙河”

db.stus.update(
    {"_id" : ObjectId("5de60e275bedf1ed7fbd96d3")},
    {$set:{
        gender:"男",
        address:"流沙河"
    }}    
)

3、删除 _id等于 5de60e275bedf1ed7fbd96d3中的 address字段

db.stus.update(
    {"_id" : ObjectId("5de60e275bedf1ed7fbd96d3")},
    {$unset:{
        address:0 //这里的0 可以随便写个数字
    }}    
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值