MongoDB

一、概述

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

二、MongoDB的基本的指令

1. 启动服务器

mongod --dbpath 路径 --port 端口号
mongod

2. 启动客户端

mongo

3. MongoDB的CRUD的操作

基本操作

1. 进入指定的数据库
	use 数据库
2. 显示所有的数据库
	show dbs
3. 显示数据库中所有的集合
	show collections
4. 显示当前所在的数据库
	db

向数据库中插入文档

1. db.collection.insert()
 	insert()可以向集合中插入一个或多个文档
2. db.collection.insertOne()
	向集合中插入一个文档
3. db.collection.insertMany()
	向集合中插入多个文档
/*
    向数据库插入文档
        db.<collection>.insert()
        - 向集合中插入一个或多个文档
        - 当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id
            该属性用来作为文档的唯一标识
        - _id我们可以自己指定,如果我们指定了数据库就不会在添加了,如果自己指定_id 也必须确保它的唯一性
        
    db.collection.insertOne()
        - 插入一个文档对象
    db.collection.insertMany() 
        - 插入多个文档对象
*/
db.stus.insert({name:"猪八戒",age:28,gender:"男"});

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

db.stus.insert({_id:"hello",name:"猪八戒",age:28,gender:"男"});
db.zmq.insert([
{name:"小黑",age:18},
{name:"小白",age:18}
]);

查询数据库中的文档

1.  db.collection.find()
	可以根据指定条件从集合中查询所有符合条件的文档
	返回的是一个数组
2. db.collection.findOne()
	查询第一个符合条件的文档
	返回的是一个对象
3. db.collection.find().count()
	查询符合条件的文档的数量
/*
    查询
        db.collection.find()
        - find()用来查询集合中所有符合条件的文档
        - find()可以接收一个对象作为条件参数
            {} 表示查询集合中所有的文档
            {属性:值} 查询属性是指定值的文档
        - find()返回的是一个数组
            
        db.collection.findOne()
        - 用来查询集合中符合条件的第一个文档  
        - findOne()返回的是一个文档对象 
       
       db.collection.find({}).count() 
        - 查询所有结果的数量
*/
db.stus.find({_id:"hello"});
db.stus.find({age:16 , name:"白骨精"});
db.stus.find({age:28});
db.stus.findOne({age:28});

db.stus.find({}).count();

修改数据库中的文档

1. db.collection.update()
	可以修改、替换集合中的一个或多个文档
2. db.collection.updateOne()
	修改集合中的一个文档
3. db.collection.updateMany()
	修改集合中的多个文档
4. db.collection.replaceOne()
	替换集合中的一个文档
/*
    修改
     db.collection.update(查询条件,新对象)
        - update()默认情况下会使用新对象来替换旧的对象
        - 如果需要修改指定的属性,而不是替换需要使用“修改操作符”来完成修改
            $set 可以用来修改文档中的指定属性
            $unset 可以用来删除文档的指定属性
        - update()默认只会修改一个
            
        db.collection.updateMany()
        - 同时修改多个符合条件的文档
   
        db.collection.updateOne()
        - 修改一个符合条件的文档    
        
        db.collection.replaceOne()
        - 替换一个文档
*/
db.stus.find({});

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

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

db.stus.update(
    {"_id" : ObjectId("59c219689410bc1dbecc0709")},
    {$unset:{
        address:1
    }}    
)

db.stus.updateMany(
    {"name" : "猪八戒"},
    {
        $set:{
            address:"猪老庄"
        }
    }    
);
    
db.stus.update(
    {"name" : "猪八戒"},
    
    {
        $set:{
        address:"呵呵呵"
        }
    }  ,
    {
        multi:true
    }    
)

删除集合中的文档

1. db.collection.remove()
 	删除集合中的一个或多个文档(默认删除多个)
2. db.collection.deleteOne()
	删除集合中的一个文档
3. db.collection.deleteMany()
	删除集合中的多个文档
4. db.collection.remove({})
	清空一个集合
5. db.collection.drop()
	删除一个集合
6. db.dropDatabase()
	删除一个数据库

Q.E.D.


愿你编码半生,归来仍是少年