mongoDB数据库
1、下载:https://www.mongodb.com/
2、解压完成后把bin目录放在环境变量中
3、在根目录下创建一些文件夹,
......\data\db ......\data\log ......\data\log\mongod.log
4、自制系统服务,
mongod --bind_ip 0.0.0.0 --port 27017 --logpath E:\MongoDB\Server\3.6\log\mongo.log --logappend --dbpath E:\MongoDB\Server\3.6\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
5、启动
net start MongoDB net stop MongoDB
6、登录
mongo
#账号管理:https://docs.mongodb.com/master/tutorial/enable-authentication/ #1、创建账号 use admin db.createUser( { user: "root", pwd: "123", roles: [ { role: "root", db: "admin" } ] #管理员 } ) use test db.createUser( { user: "egon", pwd: "123", roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "db1" } ] #权限范围 } ) #2、重启数据库 mongod --remove mongod --config "C:\mongodb\mongod.cfg" --bind_ip 0.0.0.0 --install --auth #设置下配置文件,设置保存的路径登 #3、登录:注意使用双引号而非单引号 mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin" #也可以在登录之后用db.auth("账号","密码")登录
C:\Users\Administrator>mongo
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.2
>>
mongo use admin db.auth("root","123") #推荐博客:https://www.cnblogs.com/zhoujinyi/p/4610050.html 创建账号密码+开启认证机制
每个库都对应的有一个账号,且在创建账号的时候就规定了使用的范围,如果用root用户登录可以操作所有的数据库
命令行shell
#1、mongo 127.0.0.1:27017/config #连接到任何数据库config #2、mongo --nodb #不连接到任何数据库 #3、启动之后,在需要时运行new Mongo(hostname)命令就可以连接到想要的mongod了: > conn=new Mongo('127.0.0.1:27017') connection to 127.0.0.1:27017 > db=conn.getDB('admin') admin #4、help查看帮助 #5、mongo时一个简化的JavaScript shell,是可以执行JavaScript脚本的
关系:库>集合>文档
mysql:库>表>数据
1、数据库的操作:
#1、增 use config #如果数据库不存在,则创建数据库,否则切换到指定数据库。 #2、查 show dbs #查看所有 可以看到,我们刚创建的数据库config并不在数据库的列表中, 要显示它,我们需要向config数据库插入一些数据。 db.table1.insert({'a':1}) #3、删 use config #先切换到要删的库下 db.dropDatabase() #删除当前库
2、集合操作
#1、增 当第一个文档插入时,集合就会被创建 > use database1 switched to db database1 > db.table1.insert({'a':1}) WriteResult({ "nInserted" : 1 }) > db.table2.insert({'b':2}) WriteResult({ "nInserted" : 1 }) #2、查 > show tables table1 table2 #3、删 > db.table1.drop() true > show tables table2
3、文档操作
增加:
#创建一个user的局部变量,这是一个JavaScript对象 user={ "name":"egon", 'is_nb':true, 'hobbies':['music','read','dancing'] } db.userinfo.insert(user) db.userinfo.find() user1={ "name":"asb", 'is_sb':true, 'hobbies':['music','read','dancing'] } user2={ "name":"egon", 'is_sb':'wxx', 'hobbies':['music','read','dancing'] } user3={ "name":"egon3", 'is_sb':false, 'hobbies':['music','read','dancing'] } db.userinfo.insertMany([user1,user2,user3])
查 (db.表名.find())
db.userinfo.findOne() # 查找所有 db.userinfo.find() db.userinfo.find().pretty() # 多个and条件 db.user.find({'name':'egon','age':{'$gt':20}}) # 也可不写条件,代表匹配所有 db.user.find({}) # 规定显示结果中有哪些key没有哪些key > db.user.find({},{'_id':0,'name':1,'age':1}) { "name" : "egon", "age" : 10 } { "name" : "egon", "age" : 20 } { "name" : "egon", "age" : 30 } # "$lt" "lte" "$gt" "gte" "$ne",其中"$ne"能用于所有数据类型 db.user.find({'age':{'$gte':10,'$lt':30}}) # or查询,or的条件放到[]内,注意:一个{}内逗号分开的多个条件相当于and db.user.find({'$or':[{'name':'egon'},{'age':{'$gte':30}}]}) # in和nin db.user.find({'age':{'$in':[10,11,12,20]}}) db.user.find({'age':{'$nin':[10,11,12,20]}}) # {'$mod':[2,1]},对2取余如果为1则匹配成功 db.user.insert({'_id':1,'name':'egon','age':10}) db.user.insert({'_id':2,'name':'egon','age':20}) db.user.insert({'_id':3,'name':'egon','age':30}) > db.user.find() { "_id" : 1, "name" : "egon", "age" : 10 } { "_id" : 2, "name" : "egon", "age" : 20 } { "_id" : 3, "name" : "egon", "age" : 30 } > db.user.find({'_id':{'$mod':[2,1]}}) { "_id" : 1, "name" : "egon", "age" : 10 } { "_id" : 3, "name" : "egon", "age" : 30 } # not 取反 > db.user.find({'_id':{'$not':{'$mod':[2,1]}}}) { "_id" : 2, "name" : "egon", "age" : 20 } # {'key':null} 匹配key的值为null或者没有这个key # 正则表达式 > db.user.find({'name':/^e.*?n$/i}) { "_id" : 1, "name" : "egon", "age" : 10 } { "_id" : 2, "name" : "egon", "age" : 20 } { "_id" : 3, "name" : "egon", "age" : 30 } # 查询数组 > db.food.insert({'fruit':['apple','banana','peach']}) WriteResult({ "nInserted" : 1 }) > db.food.find({'fruit':'banana'}) #只要存在就可以 { "_id" : ObjectId("5a5b7ad057147a04b81f2bc3"), "fruit" : [ "apple", "banana", "peach" ] } > db.food.find({'fruit':{'$all':['banana','apple']}}) #既有banana又有apple > db.food.find({'fruit.1':'banana'}) #按照位置 > db.blog.find().pretty() { "_id" : 1, "name" : "alex意外死亡的真相", "comments" : [ { "name" : "egon", "content" : "alex是谁???", "thumb" : 200 }, { "name" : "wxx", "content" : "我去,真的假的", "thumb" : 300 }, { "name" : "yxx", "content" : "吃喝嫖赌抽,欠下两个亿", "thumb" : 40 }, { "name" : "egon", "content" : "xxx", "thumb" : 0 } ] } db.blog.find({},{'comments':{"$slice":-2}}).pretty() #查询最后两个 db.blog.find({},{'comments':{"$slice":[1,2]}}).pretty() #查询1到2 # 数组和范围查询的相互作用 db.test.insert({'x':5}) db.test.insert({'x':15}) db.test.insert({'x':25}) db.test.insert({'x':[5,25]}) > db.test.find({'x':{'$gt':10,'$lt':20}}) { "_id" : ObjectId("5a5b8310b9b1b7388a40f993"), "x" : 15 } { "_id" : ObjectId("5a5b8310b9b1b7388a40f995"), "x" : [ 5, 25 ] } #发现连非数组的也找出来了,如果只想匹配数组,则用$elemMatch > db.test.find({'x':{"$elemMatch":{'$gt':10,'$lt':20}}}) #匹配不到内容 > db.test.find({'x':{"$elemMatch":{'$gt':5,'$lt':115}}}) #25属于该范围 { "_id" : ObjectId("5a5b8310b9b1b7388a40f995"), "x" : [ 5, 25 ] } #如果只想匹配非数组需要建立索引,结合min与max使用
改:
先取数据定义一个变量名,先对这个变量进行修改,直接(变量名、属性=新的值),然后利用对象跟变量进行更新操作。
#1、最简单的更新就是用一个新的文档完全替换匹配的文档。这适用于大规模式迁移的情况。例如对下面的用户文档做 一个比较大的调整 > db.user.find().pretty() { "_id" : ObjectId("5a5b3a74c126b4b2cbb57e3f"), "name" : "egon", "girl_friends" : 33, "wives" : 23 } # 先找到要修改的对象 > var egon=db.user.findOne({'name':'egon'}) > egon { "_id" : ObjectId("5a5b3a74c126b4b2cbb57e3f"), "name" : "egon", "girl_friends" : 33, "wives" : 23 } # 修改 > egon.ralationship={'girl_friends':33,'wives':23} { "girl_friends" : 33, "wives" : 23 } > egon.username=egon.name egon # 删掉没有用的 > delete egon.girl_friends true > delete egon.wives true > delete egon.name true # 完成更新 > db.user.update({'name':'egon'},egon) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : ObjectId("5a5b3a74c126b4b2cbb57e3f"), "ralationship" : { "girl_friends" : 33, "wives" : 23 }, "username" : "egon" } 简单更新
删除:
db.userinfo.deleteOne({ 'is_sb': true }) #删除多个中的第一个
db.userinfo.find()
db.userinfo.deleteMany( { 'x'': 1 } ) # 删除x=1的全部
db.userinfo.deleteMany({}) #删除全部

浙公网安备 33010602011771号