mongoDB数据库的常用命令:

1.查看当前的数据库:db

2.查看所有的数据库: show databases/show dbs

3.切换数据库: use db_name

4.删除当前的数据库:需要先切换进去,再db.dropDatabase()

5.创建集合(表)的命令
    (1)手动创建:db.createCollection("tb_table_name")
        db.createCollection("sub",{capped:true,size:10})
        参数capped:默认值为false表示不设置上限,
        参数size:当capped值为true时,需指定此参数,表示上限大小,会将之前的数据覆盖。
    (2)不手动创建:第一次向不存在的集合中加入数据时,集合会被创建出来

6.查看集合:show collections/show tables

7.删除集合:db.集合名.drop()

8.集合增加数据:

db.tb_stu.insert({_id:2,username:"小花",gender:true})
db.tb_stu.insert({_id:3,username:"小黑",gender:false})
db.tb_stu.insert({_id:4,username:"大头儿子",gender:true})
db.tb_stu.insert({_id:5,username:"小头爸爸",gender:false})
db.tb_stu.insert({_id:6,username:"红花会",gender:false})

9.db.tb_stu.find() 查询所有数据

10.删除集合中的数据

1.默认删除所有符合条件的数据
    db.tb_stu.remove({gender:false})

2.只删除符合条件的一个数据
    db.tb_stu.remove({gender:false},{justOne:true})

3.删除所有的数据 (必须传递一个参数,可以传递一个空字典)
    db.tb_stu.remove({})

11.修改集合中的数据

1.db.tb_stu.update({条件},{修改的数据}) (一般不用)

db.tb_stu.update({_id:2},{username:"小明"})  但是修改后只剩名字了,原来其它的数据如age,gender都被删除了
    因此,一般不用。

2.使用$set修改,保存原来的数据
    db.tb_stu.update({_id:2},{$set:{username:"花花"}})

3.修改所有符合条件的数据 加multi:true
    db.tb_stu.update({gender:false},{$set:{age:28}},{multi:true})

4.删除数据中的某一字段
     db.tb_stu.update({gender:false},{$unset:{username:""}})

12.集合中数据的查询

1.查询所有的数据 可以传一个空字典
    db.tb_stu.find()/find({})

db.tb_stu.find().pretty()格式化输出数据

执行下列语句,直接建库建表:
db.stu.insert({_id:1,"name" : "郭靖", "hometown" : "蒙古", "age" : 20, "gender" : true })
db.stu.insert({_id:2,"name" : "⻩蓉", "hometown" : "桃花岛", "age" : 18, "gender" : false })
db.stu.insert({_id:3,"name" : "华筝", "hometown" : "蒙古", "age" : 18, "gender" : false })
db.stu.insert({_id:4,"name" : "⻩药师", "hometown" : "桃花岛", "age" : 40, "gender" : true })
db.stu.insert({_id:5,"name" : "段誉", "hometown" : "⼤理", "age" : 16, "gender" : true })
db.stu.insert({_id:6,"name" : "段王爷", "hometown" : "⼤理", "age" : 45, "gender" : true })
db.stu.insert({_id:7,"name" : "洪七公", "hometown" : "华⼭", "age" : 18, "gender" : true })
db.stu.insert({_id:8,"name" : "Lily", "hometown" : "英国", "age" : 18, "gender" : false })

2.查询指定条件的数据(也是查询所有符合条件的数据)
    db.stu.find({gender:true})

3.只查询符合条件的一个数据
    db.stu.findOne({gender:true})  由于只有一条数据 会自动格式化输出

4.条件运算 $lt(小于),$gt(大于),$lte(小于等于),$gte(大于等于),$ne(不等于)
    //如:查询年龄大于20岁的人
    db.stu.find({age:{$gt:20}})
     
     5.逻辑运算 $and,$or
     1.默认find的多条件,就是 $and
     db.stu.find({gender:true,hometown:"桃花岛"})

db.stu.find({$and:[{gender:true},{hometown:"桃花岛"}]})

2.$or 来自大理或者是女生
    db.stu.find({$or:[{gender:false},{hometown:"大理"}]})

3.混合使用
    //如:来自桃花岛或者年龄小于45岁 必须是男生
    db.stu.find({$and:[{$or:[{hometown:"桃花岛"},{age:{$lt:45}}],{gender:true}]})

4.范围运算符 $in,$nin
    db.stu.find({hometown:{$in:["大理","蒙古"]}})

5.正则表达式
    1./正则/
    db.stu.find({name:/黄/})
    2.$regex
    db.stu.find({name:{$regex:"段"}})

不区分大小写
    db.stu.find({name:/lily/i})

db.stu.find({name:{$regex:"lily",$options:"i"}})

6.自定义函数  $where
    db.stu.find({$where:匿名函数带返回值})

//取年龄 大于29岁的人 
    db.stu.find({$where:function(){return this.age>20}}) 涉及到变量作用域,使用this

7.查询结果显示
    1.skip 跳过几个
    2.limit 限制显示的条数
    db.stu.skip(2).limit(2)
    db.stu.limit(2).skip(2)与上面结果一致,但效率没有上面高执行时会先检查skip(2),先执行

聚合查询:(管道有顺序)

db.stu.aggregate([管道1},{管道2}..])

$group分组:

1.按照gender性别分组
db.stu.aggregate([{$group:{_id:"$gender"}}])  (按单个分组没有太大实际意义)
添加push,可以看到name,放在列表中
db.stu.aggregate([{$group:{_id:"$gender",all_name:{$push:"$name"}}}])

2.表达式:(相当于聚合函数) $sum,$avg,$first,$last,$max,$min.  $push
//按照性别分组 求年龄的平均值
db.stu.aggregate({$group:{_id:"$gender",avg_age:{"$avg":"$age"}}})

//按照籍贯分组 求年龄和
db.stu.aggregate({$group:{_id:"hometown",avg_age:{"$avg":"$age"}}})

$match:查找符合条件的数据

//与find查询功能一样,match可以配合管道使用
//取出年龄大于20人
db.stu.aggregate({$match:{age:{$gt:20}}})

//取出年龄小于40的,按照性别分别求年龄平均值
db.stu.aggregate({$match:{age:{$lt:40}}},{$group:{_id:"$gender",avg_age:{$avg:"$age"}}})

project:投影取出部分字段:

//取出年龄大于20;按照籍贯分组 求出年龄之和,求年龄平均值;查看的时候只想看到之和。
db.stu.aggregate({$match:{age:{$gt:20}}},{$group:{_id:"$hometown",age_sum:{$sum:"$age"},age_avg:{$avg:"$age"}}})

//想要显示的字段设置为1,在aggregate中添加一个管道如下
,{$project:{age_sum:1}}

$sort:排序:1升序  -1降序

//先找45以下,再按籍贯分组 求平均值之和,再降序,再投影。
db.stu.aggregate({$match:{age:{$lt:45}}},{$group:{_id:"$hometown",age_avg:{$avg:"$age"},last_sum:{$last:"$age"}}},{$sort:{age_avg:-1}},{$project:{age_avg:-1}})

//注意:管道是有顺序的,不能进行随意颠倒;
$skip 跳过几个查看  $limit 允许显示几个

//先跳过两个 再显示4个
 db.stu.aggregate({$skip:2},{$limit:4})
 db.stu.aggregate({$limit:4},{$skip:2})

$unwind:将数据列表 分割 拆分
//按照性别分组,求出所有人的名字 $push
db.stu.aggregate({$group:{_id:"gender",all_name_list:{$push:"$name"}}},{$unwind:"$all_name_list"})

MongoDB的索引操作

1.创建批量的数据 20w
for (var index = 0;index < 200000;index++){
    db.stu.insert({_id:index,name:"name"+index,age:index})
    }
 2.查看数据的时间 对比 毫秒
 db.xx.find().explain('executionsStats')

2.1查看_id     "executionTimeMillis" : 0, 显示0表示不足1毫秒
db.stu.find({_id:18888}).explain('executionStats')
  
2.2查看 name     "executionTimeMillis" : 103,
db.stu.find({name:"name188888"}).explain('executionStats')

3.设置ID索引ensureIndex
db.stu.ensureIndex({name:1})

4.删除索引
db.stu.dropIndex('name_1')

5.查看创建的索引
db.stu.getIndexes()
[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "test.stu"
    },
    {
        "v" : 2,
        "key" : {
            "name" : 1
        },
        "name" : "name_1",
        "ns" : "test.stu"
    }
]

再进行查询name,显示 "executionTimeMill is" : 0

MongoDB的备份和恢复

mongodump -h 127.0.0.1:27017 -d stu -o /home/python/Desktop/mongodata

备份:mongodump -h -d -o
-h host "IP:port"
-d:备份的数据库名字 db
-o:备份到哪

恢复:mongorestore -h 127.0.0.1:27017 -d newstu --dir /home/python/Desktop/mongodata/stu
-h:host
-d:恢复的数据的名字
--dir:从哪里恢复

10.数据的导出和导入

mongoexport -h dbhost -d dbname -c colname -o filename --type json/csv -f field
-h:服务器地址
-d:数据库名
-c:集合名(表)
-o:导出文件名
--type:文件类型,默认json格式,可选数据类型json,csv
-f:需要导出的字段,导出为json格式的数据时可以不指定导出哪些字段,默认全部,导出成csv文件

例如:mongoexport -h "127.0.0.1:27017" -d stu -c col1 -o test1_col1
mongoexport -h 127.0.0.1:27017 -d newstu -c stu -o data.json

导入
mongoimport -d dbname -c collectionname --file  filename --headerline --type

-d:数据库名
-c:集合名(表)
-o:导出文件名    
--type:文件类型,默认json格式,可选数据类型json,csv
-f:导入的字段名
--headerline:如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
--file:要导入的文件

mongoimport -d newstu -c student_csv --file data.csv --headerline --type

mongodb中常见数据类型

Object ID: 文档ID (可以⾃⼰去设置_id插⼊⽂档,如果没有提供, 那么MongoDB为每个文档提供了一个独特的_id, 类型为objectID)

String: 字符串, 最常⽤, 必须是有效的UTF-8
Boolean: 存储⼀个布尔值, true或false
Integer: 整数可以是32位或64位, 这取决于服务器
Double: 存储浮点值
Arrays: 数组或列表, 多个值存储到⼀个键
Object: ⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档
Null: 存储Null值
Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数
Date: 存储当前⽇期或时间的UNIX时间格式

连接的mongo数据库,返回的游标对象只能迭代一次,如果想多次遍历,可以使用list对游标对象进行强转。

MongoDB数据库常用操作命令相关推荐

  1. mongodb数据库常用指令

    详细安装看我文章http://blog.csdn.net/dreamzuora/article/details/78877898             打开在bin目录下mongo.exe来操作数据 ...

  2. gaussDB数据库常用操作命令

    GaussDB命令行连接 1.1 ssh连接主机,IP:192.168.28.178,用户名:root,密码:Huawei @123 1.2 切换至bin目录,cd /home/gaussdba/ap ...

  3. postgres数据库常用操作命令

    前言:在测试中,经常会使用到pg库进行各种操作,本文简单介绍常用的一些操作命令. 1.切换postgres用户:sudo su postgres 2.登录postgreSQL控制台:psql 3.查看 ...

  4. mysql转化为GaussDB_gaussDB数据库常用操作命令

    GaussDB命令行连接 1.1 ssh连接主机,IP:192.168.28.178,用户名:root,密码:Huawei @123 1.2 切换至bin目录,cd /home/gaussdba/ap ...

  5. Msql数据库常用操作命令

    一.基本命令1.启动服务:以管理员的身份运行(windows-system32-cmd)cmdnet start mysql2.停止服务以管理员的身份运行(windows-system32-cmd)c ...

  6. robo3T-操作MongoDB数据库常用命令

    1.常用命令 1.1 新增字段[ NumberInt() 整型化:multi 为true时,选取全部数据(集合)] 命令:db.集合名.update({}, {'$set':{'新字段':字段值}}, ...

  7. 入侵Oracle数据库常用操作命令

    最近遇到一个使用了Oracle数据库的服务器,在狂学Oracle 请教高手后终于搞到了网站后台管理界面的所有用户密码.我发现Oracle操作起来真是太麻烦,为了兄弟们以后少走些弯路,我把入侵当中必需的 ...

  8. Redis数据库常用操作命令(查询db、key、value)

    ①打开Redis可视化工具,点击console,进入查询操作界面 ②打开db库: select 5 ③获取指定 key 的值 get key """ key:Mary_c ...

  9. MongoDB数据库常用SQL命令

    1.db.collection.updateMany() 修改集合中的多个文档. db.getCollection('user').find({"pId":"3332a5 ...

最新文章

  1. 工业用微型计算机(27)-dos和BIOS调用(1)
  2. Scrapy框架的学习(8.scrapy中settings.py里面配置说明以及怎样设置配置或者参数以及怎样使用)
  3. Xamarin.Forms中使用LiteDB分页
  4. lambda 加和_流畅和稳定的API的Lambda
  5. python爬虫xpath教程_使用 Xpath 进行爬虫开发
  6. JAVA_if或者怎么用,Java If语句
  7. NeatUpload:支持大文件上传 进度条
  8. 如何在gitee上部署网页
  9. jquery的dom操作之创建节点
  10. 叶片制成切片的结构示意图_更集成的发动机!洞悉UTC 3D打印整体式半叶片
  11. 3.算法通关面试 --- 哈希表和集合
  12. 10个快乐习惯来源于美国哈佛大学
  13. Unity3D简单换装系统
  14. 【聚类】算法及其评估指标
  15. 数据分析-数据分析报告
  16. 51单片机硬件设计-最小系统(一)
  17. 五节课从零起步(无需数学和Python基础)编码实现AI人工智能框架电子书V1
  18. excel表格下拉选项怎么设置_让表格美观好看几个Excel设置技巧
  19. 微信开放平台创建android应用时怎么获取应用签名
  20. TextView(文本框)详解

热门文章

  1. 【AI笔记】刘成林讲座-人工智能发展趋势
  2. 按头安利 好看又实用的端游源码 PC端 客户端 电脑游戏源码素材看这里
  3. UG NX软件的一些简单设置
  4. 妙笔写作软件:WonderPen for Mac
  5. 统计一个英文字符串每个英文字符出现的次数
  6. python中加法表达式_Python自然语言处理练习一
  7. unity3d Localized Dialogs Cutscenes 插件简单应用
  8. 双十一,打包半价理解Vue的nextTick与watcher以及Dep的蓝色生死恋?
  9. 解决:class invalid for deserialization序列化的问题(真实有效)
  10. 渲染与云渲染——渲染行业的新趋势