mongoDB的增删改查(二)

mongoDB

一、mongoDB的介绍

>MongoDB是一个NoSQL的数据库,是一款文档型数据库。
    **数据库**指的就是一个存储数据的仓库
	数据库可以使我们完成对数据的持久化的操作
>MongoDB数据库中存储的数据的基本单位就是文档,
	MongoDB中存储的就是文档,所谓文档其实就是一个“JSON”
>MongoDB数据库使用的是JavaScript进行操作的,在MongoDB含有一个对ES标准实现的引擎
>在MongoDB中所有ES中的语法中都可以使用

二、MongoDB的基本的指令

1、启动指令

启动服务器
mongod --dbpath 路径 --port 端口号
启动客户端
mongo

2. MongoDB的基本的操作
show dbs---------- 显示所有的数据库

 >show dbs
  admin    0.000GB
  config   0.000GB
  local    0.000GB
  my_test  0.000GB
  stu      0.000GB

use 数据库---------- 进入指定的数据库

>use stu
 switched to db stu

db------- 显示当前所在的数据库

> db
  stu

show collections----- 显示数据库中所有的集合
show tables----- 显示数据库中所有的集合

> show collections
name
stu
student
stus
> show tables
name
stu
student
stus
>

3. MongoDB的增删改查的操作
(1)增加(向数据库中插入文档)

db.collection.insert()
   - insert()可以向集合中插入一个或多个文档
db.collection.insertOne()       只能插入一条数据
   - 向集合中插入一个文档
db.collection.insertMany()     必须传数组  [ ]
   - 向集合中插入多个文档
> db.work.insert({"name":"zhangsan","age":18})
  WriteResult({ "nInserted" : 1 })
 db.work.insert([{"name":"hehe","age":20},{"name":"haha","age":17}])

插入数据的结果如下:

> db.work.find()
{ "_id" : ObjectId("5f2240154f7d4123424c02eb"), "name" : "zhangsan", "age" : 18 }
{ "_id" : ObjectId("5f2241164f7d4123424c02ec"), "name" : "lisi", "age" : 16 }
{ "_id" : ObjectId("5f2241534f7d4123424c02ed"), "name" : "hehe", "age" : 20 }
{ "_id" : ObjectId("5f2241534f7d4123424c02ee"), "name" : "haha", "age" : 17 }

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

(2)查询数据

>db.collection.find()
	- 可以根据指定条件从集合中查询所有符合条件的文档
    - 返回的是一个数组
>db.collection.findOne()
	- 查询第一个符合条件的文档
	- 返回的是一个对象
>db.collection.find().count()
	- 查询符合条件的文档的数量

find()可以接受一个对象作为条件参数 {}表示查询集合中所有的文档 {属性:值} 查询字段是指定值的文档

> db.work.find({"name":"hehe"})
{ "_id" : ObjectId("5f2241534f7d4123424c02ed"), "name" : "hehe", "age" : 20 }
{ "_id" : ObjectId("5f2243de4f7d4123424c02ef"), "name" : "hehe", "age" : 20 }
> db.work.findOne({"name":"hehe"})
{
        "_id" : ObjectId("5f2241534f7d4123424c02ed"),
        "name" : "hehe",
        "age" : 20
}
> db.work.find({"name":"hehe"}).count();
2

(3) 修改数据库中的文档

>db.collection.update()      
    - 可以修改、替换集合中的一个或多个文档		
>db.collection.updateOne()
	- 修改集合中的一个文档
>db.collection.updateMany()
	- 修改集合中的多个文档
>db.collection.replaceOne()
	- 替换集合中的一个文档

update有两个参数(查询条件,新对象)默认情况下会使用新对象来替换旧对象
如果是修改指定的属性,而不是替换要是用“修改操作符”来完成
$set 可以用来修改文档中指定的属性
$unset 用来删除文档中指定的属性

> db.work.update({"name":"hehe"},{$set:{"address":"xian"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.work.find();
{ "_id" : ObjectId("5f2240154f7d4123424c02eb"), "name" : "zhangsan", "age" : 18 }
{ "_id" : ObjectId("5f2241164f7d4123424c02ec"), "name" : "lisi", "age" : 16 }
{ "_id" : ObjectId("5f2241534f7d4123424c02ed"), "name" : "hehe", "age" : 20, "address" : "xian" }
{ "_id" : ObjectId("5f2241534f7d4123424c02ee"), "name" : "haha", "age" : 17 }
{ "_id" : ObjectId("5f2243de4f7d4123424c02ef"), "name" : "hehe", "age" : 20 }
{ "_id" : ObjectId("5f2243de4f7d4123424c02f0"), "name" : "haha", "age" : 17 }
>

update() 默认情况下只会修改一个符合条件的文档,
但是我们加入第三个属性{multi:true}之后他就会查询所有的满足条件的文档。

> db.work.update({"name":"hehe"},{$set:{"address":"shanghai"}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.work.find();
{ "_id" : ObjectId("5f2240154f7d4123424c02eb"), "name" : "zhangsan", "age" : 18 }
{ "_id" : ObjectId("5f2241164f7d4123424c02ec"), "name" : "lisi", "age" : 16 }
{ "_id" : ObjectId("5f2241534f7d4123424c02ed"), "name" : "hehe", "age" : 20, "address" : "shanghai" }
{ "_id" : ObjectId("5f2241534f7d4123424c02ee"), "name" : "haha", "age" : 17 }
{ "_id" : ObjectId("5f2243de4f7d4123424c02ef"), "name" : "hehe", "age" : 20, "address" : "shanghai" }
{ "_id" : ObjectId("5f2243de4f7d4123424c02f0"), "name" : "haha", "age" : 17 }
>

(4)删除集合中的文档

> db.collection.remove()
	- 删除集合中的一个或多个文档(默认删除多个) 
	- 第二个参数传递一个true,则会只删除一个        
> db.collection.deleteOne()
	- 删除集合中的一个文档
> db.collection.deleteMany()
	- 删除集合中的多个文档
	
>清空一个集合
	-db.collection.remove({})     性能较差
>删除一个集合
	-db.collection.drop()
> 删除一个数据库
	-db.dropDatabase()
> db.work.remove({"name":"haha"})
WriteResult({ "nRemoved" : 2 })
> db.work.find();
{ "_id" : ObjectId("5f2240154f7d4123424c02eb"), "name" : "zhangsan", "age" : 18 }
{ "_id" : ObjectId("5f2241164f7d4123424c02ec"), "name" : "lisi", "age" : 16 }
{ "_id" : ObjectId("5f2241534f7d4123424c02ed"), "name" : "hehe", "age" : 20, "address" : "shanghai" }
{ "_id" : ObjectId("5f2243de4f7d4123424c02ef"), "name" : "hehe", "age" : 20, "address" : "shanghai" }
> db.work.remove({"name":"hehe"},true)
WriteResult({ "nRemoved" : 1 })
> db.work.find();
{ "_id" : ObjectId("5f2240154f7d4123424c02eb"), "name" : "zhangsan", "age" : 18 }
{ "_id" : ObjectId("5f2241164f7d4123424c02ec"), "name" : "lisi", "age" : 16 }
{ "_id" : ObjectId("5f2243de4f7d4123424c02ef"), "name" : "hehe", "age" : 20, "address" : "shanghai" }
>

补充知识

1、向work中插入20000条数据
方法一:性能较差

for(var i = 0 ; i <= 2000 ; i++){
    db.numbers.insert({num:i});
}
db.numbers.find();

方法二:推荐

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

2、查询work中num大于40小于50的文档

db.work.find({num:{$gt:40,$lt:50}})

3、查询每页的数据

//limit()设置我们显示数据的上限
db.work.find().limit(10);
//skip()用于跳过前n条数据
db.work.find().skip(10).limit(10);//显示第二页的数据11-20
//db.work.find().skip((页码-1)*每页显示的条数).limit(每页的条数);

4、MongoDB 排序

 在 MongoDB 中使用 sort() 方法对数据进行排序,需要传递一个对象来指定排序规则。
 其中 1 为升序排列,而 -1 是用于降序排列。
db.work.find({}).sort({sal:1,empo:-1})
//表示按照两个字断去排序,只有在sal相同的情况下,在去按照empo排序
limit()和sort()和skip()可以任意顺序进行调用执行。

5、查询条件

 在查询的时候,可以在第二个参数的位置去设置你想要查询结果(你想要显示的字断)
 其中1表示显示,0表示隐藏
db.work.find({},{name:1,_id:0})
//只显示name字断下面的内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值