MongoDB数据库操作命令

MongoDB

mongodb 将数据存储为文档 数据结构是由键值对组成的 MongoDB 的文档类似于Json对象 字段的值可以是文档 数组 以及文档数组

MongoDB和MySQL概念的区别

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库的表/集合
rowdocument数据记录行/wen
columnfield字段列/域
indexindex索引
table joins表连接/不支持
primary keyprimary keyMongoDB自动将_id设置为主键

需要注意的点

  1. 文档中的键值对 是有序的

  2. MongoDB区分大小写

  3. 不要有重复的键

  4. 文档的键为字符串

  5. 文档的键不能以_作为开头

一 进入MongoDB数据库

(1) cd mongodb/bin目录

mongod.exe --dbpath=数据库安装位置

(2) 开启一个新的终端

cd mongodb/bin目录

mongo.exe

二 对于库的操作

(1) 查看数据库

​ show dbs

(2) 创建/选择数据库

​ use 库名

注意:

  1. 如果库不存在 则创建

  2. 库在 则进行数据库的切换

  3. 数据库创建出来并不会显示 需要在库里面创建集合 才能查看到

(3) 查看当前所在的数据库
  1. db

  2. db.getName()

(4) 创建集合

​ db.createCollection('集合名')

(5) 查看集合

​ show collections

(6) 插入文档

​ db.user.insert({name:"张三",age:18,sex:"男"})

注意:
  1. 在MongoDB里面 对于集合 文档操作 统一使用db

  2. 严格区分大小写

  3. 如果往不存在的集合插入数据 数据插入成功集合被创建

(7) 删除集合

db.collection.drop()

三 INSERT/SAVE 文档的添加

(1) insert 就是纯添加数据

db.collection.insert({文档})

(2) insert 插入多条文档

db.collection.insert(【{文档1},{文档2}...】)

注意:

​ 如果不加【】 那么只有第一条数据才能插入成功

3.2X 以后建议使用

  • db.collection.insertOne()

    • db.user.insertOne({"name" : "李四", "age" : 20, "sex" : "女"})

  • db.collection.insertMany()

    • db.user.insertMany([{name:"张三",age:20,sex:"男"},{name:"王五",age:30,sex:"女"}])

(3) 使用save

  1. 插入文档

    db.collection.save({文档})

  2. 覆盖文档

    db.user.save({"_id" : ObjectId("5a5eeefcdc919fad4332d28f"), "name":"芙蓉姐姐"}))

注意:

​ 当save指定唯一_id的时候 为覆盖 否则为添加文档

四 MongoDB的条件操作符

1. $gt  大于           db.collection.find({age:{$gt:10}})
2. $gte 大于等于       db.collection.find({age:{$gte:10}})
3. $lt  小于           db.collection.find({age:{$lt:10}})
4. $lte 小于等于       db.collection.find({age:{$lte:10}})
5. {key:value}        db.collection.find({age:10})
6. $ne  不等于         db.collection.find({age:{$ne:10}})
7. 使用id查询 "_id" : ObjectId("5a5eee62dc919fad4332d28c")
8. /数据/  包含查询    db.collection.find({name:/张/})
9. /^数据/ 以...开头   db.collection.find({name:/^张/})
10./数据$/ 以...结尾   db.collection.find({name:/四$/})
11. $in 在...里        db.collection.find({age:{$in:[10,20,30]}})
12 $nin 不在...里      db.collection.find({age:{$nin:[10,20,30]}})

五 UPDATE 修改

主体结构:

 
      
 
        
db.collection.update(
    <query>,
    <update>,
    {
      upsert:<boolean>,
      multi:<boolean>
    }
)


  • query: update的查询条件 类似于sql 的 where 后面的

  • update:更新操作符 $inc 累加修改 $set 直接修改 $unset

  • upsert: 当修改的数据不存在 是否作为新数据插入 默认false

  • multi: 当查询到多条数据的时候 是修改一条还是多条 默认false 只改一条

实例:

db.goods.update({name:"张三",age:18},{$set:{age:28}}) 将name为张三 age为18 的 将age改为28

更新操作符 $inc 和 $set

db.goods.update({name:"张三",age:18},{$set:{age:18}},{upsert:true}) 将name为张三 age为18 的 将age改为28 如果数据不存在则插入

db.goods.update({name:"张三",age:28},{$inc:{age:2}},{upsert:true}) 将name为张三 age为28的 年龄加2岁

db.goods.update({name:"张三"},{$set:{age:30}},{multi:true}) 将所有符合条件的数据 都进行修改

db.goods.update({age:{$gt:30}},{$set:{name:"李四"}},true,false)

$unset

db.collection.update({},{$unset:{age:14}})

注意:
  1. 当修改的键值对不存在的时候 则为添加新的键值对

  2. upsert和multi可以不给键 进行使用 位置一一对应

3.2X 以后建议使用

  • db.collection.updateOne()

    db.goods.updateOne({age:{$in:[28,40]}},{$inc:{age:10}})

  • db.collection.updateMany()

    db.goods.updateMany({age:{$in:[18,30]}},{$inc:{age:10}})

六 FIND 查询

(1) 查询所有

​ db.collection.find()

(2) 指定字段进行显示或者不显示

​ db.collection.find(条件,{key:true/1,age:true/1}) #指定返回的键

​ db.user.find({},{name:true,age:true})

​ db.collection.find(条件,{key:false/0,age:false/0}) #指定除了当前的键 都返回

注意:

俩种显示和不显示的模式 不能混用(无法推断其它的键是否应返回)

db.user.find({},{name:true,age:false}) 错误的写法

_id键默认返回 需要主动设置为0/false 才可以隐藏

db.user.find({},{_id:0,name:true,age:true}) 正确的写法
(3)findOne 查询一条数据

​ db.collection.findOne()

(4) count 统计数据条数

​ db.collection.find().count()

(5) pretty 将数据展开来看

​ db.collection.find().pretty()

(6) AND 逻辑与

db.collection.find({key1:val1,key2:val2})

db.user.find({age:{$gt:18},sex:"男"})

db.user.find({age:{$gt:18,$lt:30}})

注意:

如果条件里 有俩个相同的field 那么后面的会将前面的覆盖掉

如:db.user.find({name:"张三",name:"李四"})

(7) OR 逻辑或

db.collection.find({$or:[条件1,条件2...]})

db.user.find({$or:[{name:"张三"},{name:"李四"}]})

(8) AND和OR的使用

db.collection.find({key:val,key:val,$or:[{条件1},{条件2}...]})

db.user.find({name:"张三",$or:[{age:18},{sex:"男"},{sex:"女"}]})

(9) LIMIT 取值

db.collection.find().limit(num) 从0取出num条文档

db.user.find().limit(3) #从0开始取3条文档

(10) SKIP 跳过

db.collection.find().skip(num)

db.user.find().skip(2)

(11) SKIP LIMIT 配合使用

db.collection.find().skip(num).limit(num)

(12) SORT 排序

使用1 和 -1进行排序

1代表升序

-1代表降序

db.collection.find().sort({key:1|-1})

db.user.find({},{age:true}).sort({age:-1}).limit(1)

db.user.find({},{age:true}).sort({age:1}).limit(1)

七 REMOVE 删除

主体结构:

 
      
 
        
db.collection.remove(
    <query>,
    {
      justOne:<boolean>
    }
)




参数说明

query: 删除文档的条件

justOne:(可选)是否只删除匹配到的一条 默认false

db.collection.remove({条件},1/0)

db.collection.remove({条件},true/false)

db.collection.remove({条件},{justOne:true/false})

实例

db.user.remove({age:18,sex:"女"})

db.user.remove({name:/张/})})

db.user.remove({name:/李/},1)

3.2X 以后建议

  • db.collection.deleteOne()

    • db.user.deleteOne({name:"李四"})

  • db.collection.deleteMany()

    • db.user.deleteMany({name:"李四"})

八 删除数据库

  1. 删除数据库之前 最后use一下

  2. db.dropDatebase()

  3. exit 退出MongoDB

九 MongoDB备份和恢复

备份
mongodump -h host -d dbname -o 导出的路径

mongodump -h127.0.0.1 -ddemo -oC:\mongodb
恢复
mongorestore -h host -d dbname path

mongorestore -h 127.0.0.1 -d demo C:\mongodb\demo

十 MySQL的备份恢复

备份
mysqldemp -uroot -p 库名>新的名.sql
 
      
 
       
恢复
mysql -uroot -p 库名<导入的sql文件名.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值