一、MongoDB基本操作

1.1、软件环境准备

软件环境:

  • MongoDB Server5.0.9
  • Navicat15.0.28
  • RoboMongo 0.9.0
  • Window10系统

1.2、MongoDB连接

MongoDB连接,使用“username:password@hostname/dbname’”的形式进行连接。
连接本地数据库服务器,端口是默认的。

mongodb://localhost

1.3、创建数据库

MongoDB创建数据库语法

use DATABASE_NAME

demo:创建test数据库

use test

如果没有数据库,就创建数据库,否就连接到指定数据库
查看所有的数据库,使用

show dbs

不过这时我们使用show dbs的话,还是看不到我们创建的数据库,其实是需要我们向数据库里添加数据才可以看得到的
demo:向test数据库里插入一行数据

db.test.insert({"name":"test"})

1.4、删除数据库

MongoDB删除数据库语法

db.dropDatabase()

不过一般要先使用use连接数据库,然后再删除指导数据库
demo:删除test数据库
连接test数据库

use test

删除test数据库

db.dropDatabase()

删除集合
demo:删除test数据库的coll集合

> use test
switched to db runoob
> show tables
coll
> db.coll.drop()
true
> show tables
>

1.5、插入文档

MongoDB插入文档语法大致如

db.COLLECTION_NAME.insert(document)

demo:向test数据库的col集合中插入文档
方法一

>use test
>db.col.insert({title: 'MongoDB', description: 'MongoDB NOSQL',by: 'test',url: 'https:',tags: ['mongodb', 'database', 'NoSQL'],likes: 100
})

查看已经写入数据的col集合

db.col.find()

方法二
定义一个document对象

document=({title: 'MongoDB', description: 'MongoDB NOSQL',by: 'test',url: 'https:',tags: ['mongodb', 'database', 'NoSQL'],likes: 100
});

执行,将定义好的document对象写入数据

db.col.insert(document)

1.6、新增文档

save()方法
语法大概如:

db.collection.save(<document>,{writeConcern: <document>}
)

参数意义

  1. document : 文档数据。
  2. writeConcern :可选,抛出异常的级别。
    demo:替换了 _id 为 56064f89ade2f21f36b03136 的文档数据
db.col.save({"_id" : ObjectId("56064f89ade2f21f36b03136"),"title" : "MongoDB","description": 'MongoDB NOSQL',"by": 'test',"url": 'https:',"tags": ['mongodb', 'database', 'NoSQL'],"likes": 100
})

1.7、更新文档

更新文档操作语法大概如:

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

参数意义:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如,,,inc…)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

demo:更新test数据库的文档
使用test数据库

use test

更新文档操作

db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}})

然后查看文档是否更新

db.col.find()

修改多条相同的文档
上诉情况是修改一条文档的,若修改多条相同的文档,则需要设置 multi 参数为 true。

db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}},{multi:true})

也可以使用updateMulti

db.col.updateMany({'title':'MongoDB'},{$set:{'title':'MongoDB test'}})

综合操作:

只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

1.8、删除文档

MongoDB删除文档操作为

db.collection.remove(<query>,<justOne>
)

MongoDB2.6以后版本的操作为

db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>}
)
  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档。
  • writeConcern :(可选)抛出异常的级别。

demo:删除title为MongoDB的数据

db.col.remove({'title':'MongoDB'})

删除集合所有数据

db.col.remove({})

1.9、MongoDB查询

MongoDB查询语法

db.collection.find(query, projection)
  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
    易读方式查询
db.col.find().pretty()

除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。

1.10、MongoDB条件操作

MongoDB AND条件

可以传入多个键(key),每个键(key)以逗号隔开

db.col.find({key1:value1, key2:value2}).pretty()

使用andin的例子,获取"col"集合中的一系列数据:

db.getCollection("col").find({$and: [{"SYNC_STATUS": "HANDLED"}, {"CODE": {$in: ["123456789","12345678910"]}}]
}).pretty();

MongoDB OR条件

db.col.find({$or: [{key1: value1}, {key2:value2}]}
).pretty()

MongoDB AND和OR联合查询
AND 和 OR 联合使用,类似常规 SQL 语句为: ‘where likes>50 AND (by = ‘教程’ OR title = ‘MongoDB 教程’)’

MongoDB条件操作符

  • (>) 大于 : $gt
  • (<) 小于 : $lt
  • (>=) 大于等于 : $gte
  • (<= ) 小于等于 : $lte
    Demo:
    获取 “col” 集合中 “likes” 大于 100 的数据,可以使用以下命令:
db.col.find({"likes" : {$gt : 100}})

获取"col"集合中 “likes” 大于等于 100 的数据,可以使用以下命令

db.col.find({likes : {$gte : 100}})

获取"col"集合中 “likes” 小于 150 的数据,可以使用以下命令:

db.col.find({likes : {$lt : 150}})

获取"col"集合中 “likes” 小于等于 150 的数据,可以使用以下命令:

db.col.find({likes : {$lte : 150}})

获取"col"集合中 “likes” 大于100,小于 200 的数据,可以使用以下命令:

db.col.find({likes : {$lt :200, $gt : 100}})

MongoDB Limit和Skip操作符
Limit操作符,Number表示读取的记录数

db.COLLECTION_NAME.find().limit(NUMBER)

MongoDB skip()方法
Number表示要跳过的记录数,默认从0开始

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

1.11、MongoDB $type操作符

MongoDB $type操作符表

类型 数字 备注
Double 1
Object 2
Array 4
Binary data 5
Undefined 6 已废弃
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255 Query with -1
Max key 127

获取 “col” 集合中 title 为 String 的数据,可以使用以下命令:

db.col.find({"title" : {$type : 2}})

1.12、MongoDB排序

使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。
这是对集合进行排序的

db.COLLECTION_NAME.find().sort({KEY:1})

1.13、MongoDB索引

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。建立索引可以提高查询速度。如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。
demo:查询col集合,“title”为索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。

db.col.ensureIndex({"title":1})

在后台创建索引

db.values.ensureIndex({open: 1, close: 1}, {background: true})

1.14、MongoDB聚合

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。
基本语法如:

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

demo:通过集合计算每个作者所写的文章数,使用aggregate()计算结果如下:

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

以上实例类似sql语句:
select by_user, count(*) from mycol group by by_user

MongoDB系列之MongoDB常用命令相关推荐

  1. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令

    文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...

  2. mongodb数据库的一些常用命令列表

    超级用户相关:use admin #增加或修改用户密码 db.addUser(ixigua,'pwd') #查看用户列表 db.system.users.find() #用户认证 db.auth(ix ...

  3. kafka java api 删除_Kafka入门系列—6. Kafka 常用命令及Java API使用

    常用命令 启动Zookeeper ./zkServer.sh start-foreground 可选参数: ./zkServer.sh {start|start-foreground|stop|res ...

  4. Docker 从入门到实践系列三 - Docker 常用命令,java高级开发工程师面试问题

    容器命令 镜像运行起来后,称为容器. 下面以 Tomcat 为例 搜索镜像 docker search tomcat 下载镜像 docker pull tomcat 运行容器 运行tomcat doc ...

  5. 【Linux后端开发必问】操作系统系列(Linux常用命令、文件权限修改、静态与动态库的制作)

    目录 一.说说常用的Linux命令 二.文件权限如何修改 三.静态库和动态库的制作 1.静态库 2.动态库的制作 3.两者优势对比 一.说说常用的Linux命令 1.cd命令:用于切换当前目录: 2. ...

  6. 大数据系列(3)-HDFS 常用命令

    目录 1.服务端命令 1.1 appendToFile 追加到文件 1.2 copyFromLocal 从本地拷贝 1.3 copyToLocal 下载文件到本地 1.4  count 统计文件目录. ...

  7. MongoDB系列:二、MongoDB常用操作练习

    最近在自学MongoDB,在此记录一下,当做学习笔记了(不断更新中)!! 一.背景 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存 ...

  8. MongoDB与Mysql常用命令解释

    原文 本文旨在介绍MongoDB,Mysql的常用命令:将MongoDB 和传统的关系型数据库的常用命令对照起来学习,更加便于记忆和理解. MongoDB是由数据库(database/reposito ...

  9. MongoDB系列之学习笔记教程汇总

    1.什么是MongoDB? MongoDB系列之SQL和NoSQL的区别 MongoDB系列之什么是非关系型数据库 MongoDB系列之MongoDB基本概念 MongoDB系列之适用场景和不适用场景 ...

最新文章

  1. 分享一个MD5加密的工具类
  2. Linux概念架构的理解
  3. sqlserver 查询语句执行历史
  4. 盘点PHP编程常见失误
  5. react 子传参父_react子父传参有几种方法?
  6. php 正则匹配 %3e,在shell脚本中使用正则表达式
  7. Java电子书平滑翻页效果_(转载)Android 平滑和立体翻页效果1
  8. myeclipse+tomcat-热部署
  9. 蓝桥杯 2012 决赛 拼音字母
  10. 德语翻译-德语在线批量翻译软件
  11. 三款 Mac 远程控制(远程桌面)工具
  12. 数字后端概念——padding
  13. android读取assets中的txt文件路径,Android 读取assets文件下的txt文件
  14. 服务器配置选择、域名选择、域名解析、域名绑定服务器,ICP免费备案等,此文档配置节约大量时间
  15. MySQL InnoDB Cluster部署方案与实践
  16. html背景斜线,巧妙的实现 CSS 斜线
  17. mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com)
  18. uva 1647(规律)
  19. error: ‘ULONG_MAX’ was not declared in this scope
  20. python操作ipv6_python ipv6计算SQLAlchemy复杂查询

热门文章

  1. python抓包程序_「docker实战篇」python的docker爬虫技术-fiddler抓包软件详细配置(七)...
  2. mixamo进不去_路由器登录入口进不去解决方法
  3. 流弊!《Python全栈学习手册》开放下载了
  4. 手机进水的处理方法 进水手机一样能够恢复如新
  5. vue中的请求拦截器与响应拦截器的使用
  6. 货币政策和财政政策对总需求的影响 - 异想天开
  7. python如何计算Content-MD5并获取文件的Content-MD5值
  8. mysql时间戳问题
  9. jeecg-boot中popup实现动态传参
  10. 【杂·如何给女友普及计算机二进制,一篇就够了】