NoSQL-MongoDB数据库

本文介绍MongoDB数据库的基本操作,包括数据库、集合的管理,数据的增删改查及排序、分组等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB数据库的操作

进入CMD , 输入mongo , 进入shell界面

(一)数据库

1.show dbs;    查看已创建的数据库

2.use dbName;    如果该数据库存在,则进入该数据库/如果数据库不存在则创建该数据库

提示 : 由于新创建的数据库没有集合以及数据,通过show dbs;命令查看不到新创建的数据库名称

         需要添加集合并插入数据进行验证: 如

         use test;

         db.col.insert({name:'Jack',age:20});

         show dbs;    (可看到名称为test的数据库)

3. db.dropDatabase();    删除数据库

     use dbName; db.dropDatabase();   

(二)集合 

1.db.createCollection("colName");             创建集合

use dbName;

db.createCollection("colName",{capped:true}) (设置capped:true表示集合不限定空间大小)

2.show collections;                                      查看该数据库下的已有集合

use dbName; show collections;

3.db.colName.drop();                                  删除集合

use dbName; db.colName.drop();

(三)数据的增删改查

(以操作test数据库下的集合col为例)

1.插入数据

 use test;       

 db.col.insert({"name":"优快云","age":20,"topic":["computer","book","job"]});

2.修改数据

假设集合col中有数据:

{"name":"Jack","age":25,"from":"USA"}

{"name":"Bob","age":32,"from":"China"}

{"name":"Lily","age":10,"from":"French"}

{"name":"Frid","age":48,"from":"China"}

修改数据:

use test;

db.col.update({name:"Bob"},{$set:{age:100}});    只修改一条数据

db.col.update({from:"China"},{$set:{age:100}},{multi:true});    修改所有匹配的数据

3.删除数据

(1)删除指定记录 : db.col.remove({...})

     其中:{...}表示条件 ==> {from:"China"}(删除from属性为China的记录)

(2)删除所有记录 : db.col.remove({})

4.查询数据

(1)查询所有记录 : db.col.find();

 注:db.col.find(); --> 输出每条记录的所有字段

     如果要指定字段输出 , 有如下方式:

     db.col.aggregate({$project:{

                                name:1,from:1,_id:0

                                }});

     其中:(name:1)表示输出属性    (_id:0)表示不输出属性

(2)条件查询记录 : db.col.find({....})

(a)指定属性大小

{age : 25}    +    {age : {$ne : 25}}

{age : {$gt : 25}}    +    {age : {$lt : 25}}    +    {age : {$gte : 25}}    +    {age : {$lte :  25}}

{age : {$gt : 20,$lt : 45}}

(b)AND

{from : "China",name : "Bob"}

(c)OR

{$or : [{name : 'Bob'},{name : 'Nike'}]}

(四)其他操作

(1)排序

db.col.find().sort({age: 1})  ---(按照属性age正序排列)

db.col.find().sort({age: -1})  ---(按照属性age反序排列)

(2)分类

db.col.aggregate({$group:{_id:'$from',num:{$sum : 1}}});        ---按照属性from进行分组,并统计每组的样本量

db.col.aggregate({$group:{_id:'$from',min:{$min : '$age'}}});        ---按照属性from进行分组,并统计每组中年龄的最小值

db.col.aggregate({$group:{_id:'$from',max:{$max : '$age'}}});        ---按照属性from进行分组,并统计每组中年龄的最大值

db.col.aggregate({$group:{_id:'$from',avg:{$avg : '$age'}}});        ---按照属性from进行分组,并统计每组中年龄的平均值

(3)限制查询的记录数

db.col.find({...}).limit(num)    ---查询结果返回符合条件的num条数据

(4)管道流

基本属性:

1.$project : 控制输出记录的字段(1表示输出字段/0表示不输出字段)

   如:db.col.aggregate({$project : {name : 1, from : 1,age : 0}});     ---输出字段name和from,不输出字段age

2.$match : 查询条件

   如:db.col.aggregate({$match : {age : {$gt : 10,$lt : 50}});    ---匹配年龄在10-50之间的记录

       db.col.aggregate({$match : {from : {$exists : True}});

       db.col.aggregate({$match:{$or:[{from:'UK'},{from:'China'}]}});

3.$limit : 限制查询记录数

   如:db.col.aggregate({$limit : 3})

4.$group : 记录分组

  如:db.col.aggregate({$group : {_id : '$from',num : {$sum : 1}}});

综合使用:

db.col.aggregate([ {$project : {...}}, {$match : {...}}, {$group : {...}});



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值