1、MongoDB学习之基本操作
MongoDB是一种文档型数据库,属于NoSQL数据库,其文档保存方式为JSON格式
学习目标:
一、数据库常用命令
二、集合常用命令
三、文档操作基本命令
一、数据库常用命令
MongoDB数据库创建可以直接使用use db,其中db.help()可以看到db里面的很多操作:
db.auth(username, password) #表示用来进行验证用户名和密码
db.createUser(userDocument) #创建用户
db.dropDatabase() #删除db库
db.version() #查看db版本
二、集合使用
> db.colletions.help()
我常用的的命令有:
db.colletions.find() #查询集合里面所有的文档
db.colletions.count( query = {}, <optional params> ) #查询集合里面所有的文档数量
db.colletions.createIndexes([keypatterns], <options>) #创建索引
db.colletions.insert(obj) #数据文档
db.colletions.remove(query) #删除文档
基本操作:
1、向集合中插入数据
> db.c1.insert({name:'jack',age:60})
WriteResult({ "nInserted" : 1 })
2、循环插入数据
> for (var i=1;i<1000;i++){
... db.c1.insert({name:'user'+i,age:i})
... }
#以上命令就可以循环插入1000条数据了
3、查询集合中所有数据
> db.c1.find() #这个命令可以查询集合c1中的所有数据,不过mongodb默认会进行分段显示(因为全部显示出来没有任何意义)
4、查询集合中文档总条数
> db.c1.count()
1002
#可以看出集合里面有1002条数据
5、查询集合里面的文档内容(条件查询)
> db.c1.find({name:'user78'}) #根据文档列进行查询
{ "_id" : ObjectId("59b2ffae6ab5918117281935"), "name" : "user78", "age" : 78 }
6、查询集合里面的某个文档的列
> db.c1.find({name:'user75'},{age:1})
{ "_id" : ObjectId("59b2ffae6ab5918117281932"), "age" : 75 }
#可以看到我查询name值为user75的age列
7、表达式查询文档
> db.c1.find({age:{$gt:900}},{name:1})
{ "_id" : ObjectId("59b2ffaf6ab5918117281c6c"), "name" : "user901" }
{ "_id" : ObjectId("59b2ffaf6ab5918117281c6d"), "name" : "user902" }
{ "_id" : ObjectId("59b2ffaf6ab5918117281c6e"), "name" : "user903" }
#可以看出来我现在要查找age大于900的文档列为name的值
$gt #表示大于
$lt #表示小于
$gte #表示大于等于
$lte #表示小于等于
$eq #表示等于
8、逻辑表达式查询
> db.c1.find({name:'user501',age:501})
{ "_id" : ObjectId("59b2ffae6ab5918117281adc"), "name" : "user501", "age" : 501 }
#以上必须同时满足两个条件时才打印对应的结果
9、模糊查询
> db.c1.find({name:/^jack/})
{ "_id" : ObjectId("59b2fcbb6ab59181172818e7"), "name" : "jack", "age" : 60 }
#由以上可以看出模糊查询name的首字母是jack的文档
10、排序查询
> db.c1.find().sort({age:1})
#按照年龄升序
> db.c1.find().sort({age:-1})
#按照年龄降序
11、按照limit查询
> db.c1.find().limit(20)
{ "_id" : ObjectId("59b2fcbb6ab59181172818e7"), "name" : "jack", "age" : 60 }
{ "_id" : ObjectId("59b2fddc0b71c480ad96d78e"), "name" : "test", "age" : 444 }
#查询前20条数据
12、查询10条以后的数据
> db.c1.find().skip(10)
{ "_id" : ObjectId("59b2ffae6ab59181172818ef"), "name" : "user8", "age" : 8 }
{ "_id" : ObjectId("59b2ffae6ab59181172818f0"), "name" : "user9", "age" : 9 }
13、分页查询
> db.c1.find().skip(10).limit(20)
#查询10条到20条的数据
14、查询某个结果集的记录条数
> db.c1.find({age:20}).count()
100
#以上可以看到age为200的结果集的统计数
15、更新集合结果集
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
criteria:用于设置查询条件的对象
objNew:用于设置更新内容的对象
upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1
multi:如果有多个符合条件的记录,是否全部更新,取值为0或1
注意:默认情况下,之后更新第一个符合条件的记录
一般情况下后面两个参数分别为0,1
mongodb更新修饰器
$set #用来指定一个键并更新键值,若键不存在并创建
$inc #用来对文档的某个值为数字型进行递增或者递减
15.1根据条件进行update修改操作
> db.c1.update({name:'test1'},{$set:{age:40}},0,1)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.c1.find({name:'test1'})
{ "_id" : ObjectId("59b30fd76ab5918117281ccf"), "name" : "test1", "age" : 40 }
#由上可以看到条件为test1的age列的值修改为40
15.2根据条件对结果集age计算
> db.c1.update({name:'test1'},{$inc:{age:-1}},0,1)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.c1.find({name:'test1'})
{ "_id" : ObjectId("59b30fd76ab5918117281ccf"), "name" : "test1", "age" : 39 }
#由上可以看出age减去1之后变成39
15.3撤销某个列
> db.c1.update({name:'test1'},{$unset:{age:1}},0,1)
#由上可以看出来文档列age被撤销了
> db.c1.update({name:'haha'},{$unset:{age:50}},0,1) #删除对于的值,原理应该是一样的
16、清除文档
语法:
db.c1.remove(query)
16.1更加条件删除文档结果集
> db.c1.remove({name:'haha'})
16.2直接清除整个文档
> db.c1.remove({})
WriteResult({ "nRemoved" : 1101 })
#由上可以看出直接删除完了
总结:mongodb的基础命令还有很多,需要认真的学习语法及用法,多练习。