mongodb是基于分布式文件存储的数据库,它的特点是:高性能、可扩展、易部署、易使用,存储数据非常方便
2.下载完成后,点击安装下载,自定义安装位置,一直点击下一步,直至安装完成。重启电脑。
在D盘要目录下新建一个mogo_data目录,里面再新建这四个目录文件夹:bin、log、conf、data
切换到安装目录下:执行下面命令:
D:\program files\MongoDB\Server\4.4\bin>mongod --dbpath D:\mongo_data\db
上述截图,代表启动成功。
切换到安装目录下:执行下面命令:
D:\program files\MongoDB\Server\4.4\bin>mongo.exe
出现如下截图,代表连接成功。
截图中,可看出mongo shell版本号,连接的数据库信息。
如上面2.1中,在conf文件夹中,创建一个名为mongod.cfg的文件
文件中配置如下:
systemLog: destination: file path: D:\mongo_data\log\mongod.log storage: dbPath: mongod.log\db
切换到安装目录下:执行下面命令:
mongod.exe --config "D:\mongo_data\conf\mongod.cfg" --install
执行结果如下:
运行命令:net start MongoDB
运行命令:net stop MongoDB
2.8 MongoDB 后台管理 Shellcmd中执行命令:
mongo
可在shell中进行一些运算,如:
一个mongodb中可以建立多个数据库。
MongoDB的默认数据库为"db",该数据库存储在data目录中。
show dbs
"local" 是你要链接的数据库。
数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串。
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
db
use 数据库名 use 集合名
db.集合名.insert(json数据)
如:在test2数据库中的NBA集合中插入数据(james,36)
use test2 db.NBA.insert{'james':36}
需要注意的是:如果数据库不存在,集合也不存在,使用上面命令后,则直接创建一个数据库,创建集合并插入数据。
查看是否安装成功
db.NBA.find()
如上图,我们并没有插入id,但是,它自动增加了全球唯一的id数据。
db.NBA.insert([{'name':'irving','age':29},{'name':'harden','age':30},{'name':'zion','age':20}])
再次查询一下,是否真正的插入了数据
插入成功。
同时插入20条数据呢?我们不可能一条一条插入吧。我们可以使用for循环来实现,操作如下:
如:我们要插入:A1,A2....A20
for (var i=1;i<=20;i++){ ... ... db.NBA.insert({'name':'A'+i,'age':i})}
如下图:
但是,看提示只插入了一条?我们不是插入20条数据吗?是不是操作不对?
我们查询看一下:
实际上,我们已经插入了全部数据,但是,它只显示最后一条数据的提示“1”。
db.NBA.find()
db.集合名.find(),查询所有的数据,上面已经提到过了。
需要注意的是:不管怎么查询,id列都会展示。
db.NBA.find({},{'name':1)
查看结果:
只查出来了name字段的数据,age数据未显示。
db.NBA.find({},{'name':0})
查看效果,跟上面刚好相反:
那我们就得先了解一下mongodb的大于小于运算符:
查询大于16岁,开始:
db.NBA.find({age:{$gt:16}})
查看结果:
db.NBA.find({'age':{$in:[20,30,36]}})
结果如下:
另外:可以将数据显示成更加美观:
db.NBA.find().pretty()
语法:db.集合名.update(条件,新数据[是否新增,是否修改多条])
我们需要再了解一下修改相差参数:
db.NBA.update({name:'zion'},{$set:{name:'luca'}})
注意:修改的值必须加上引号,否则,会提示未定义:
查看结果:
db.NBA.update({name:'luca'},{$inc:{age:1}})
同样的,有加当然也有减。再来,由于手误,年龄改错了,再改回原来的:
db.NBA.update({name:'luca'},{$inc:{age:-1}})
A. 插入数据:name:steven,age:31,xb:男
db.NBA.insert({name:'steven',age:31,xb:'男'})
B. 修改name为:curry
db.NBA.update({name:'steven'},{$set:{name:'curry'}})
C. 将其年龄增加1岁
db.NBA.update({name:'curry'},{$inc:{age:1}})
D. 修改xb列为sex
db.NBA.update({name:'curry'},{$rename:{xb:'sex'}})
E. 删除性别数据
db.NBA.update({name:'curry'},{$unset:{'sex:'男'}})
F. 修改数据不存在,加参数true可插入数据
db.NBA.update({name:'book'},{$set:{age:25}},true)
true参数意义:无该条数据时,则插入。
G. 将多条数据,年龄都改成28岁
db.NBA.update({},{$set:{age:28}},false,true)
true代表全部
默认为flase不写
语法:db.集合名.remove(条件,[是否删除一条])
true是,false否默认,删除第1条数据
db.NBA.remove({},true)
如果删除全部数据,则不加条件:
db.NBA.remove({})
工作中慎用。
语法:db.集合名.find().sort().skip(数字).limit(数字)
skip可选,1代表升序,-1代表降序
首先定义表结构:
查询两条数据以倒序排列
db.CBA.find().sort({age:-1}).limit(2)