IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MongoDB基本命令 -> 正文阅读

[大数据]MongoDB基本命令

一、数据库操作

1.选择和创建数据库

use 数据库名

2.查看数据库

show databses
或
show dbs

3.查询当前使用的数据库

db

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库:

  • admin:从权限的角度来看,这是“root”数据库,要是将一个用户添加到这个数据库,这个用户自动集成所有数据库的权限。一些特定的服务端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config:当MongoDB用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

4.数据库的删除

#会默认删除当前库
db.dropDatabase()

二、集合操作

1.集合创建

1.1显示创建(了解)

#name:要创建的集合的名称(类似于mysql的表名)
db.createCollection(name)
例如:db.createCollection("lzl")

1.2隐式创建
当向一个集合中插入文档的时候,如果集合不存在,则会自动创建集合

2.查看当前库中的集合(表):

show collections
或
show tables

3.集合的删除

db.collection.drop()
或
db.集合.drop()

如果成功删除选定集合,则drop()方法返回true,否则返回false

三、文档的CRUD

1.单个文档的插入(使用insert()或者save()向集合中插入文档)

db.collection.insert(
	{
		writeConcern: <document>,
		ordered: <boolean>
	}
)
ParameterTypeDescription
documentdocument or array要插入到集合中的文档或文档数组(json格式)
writeConcerndocument插入时性能的级别
orderedboolean可选。如果为真,则按顺序插入数组中的文档,如果其中一个文档出现错误,MongoDB将返回而不处理数组中的其余文档。如果为假,则执行无序插入,如果其中一个文档出现错误,则继续处理数组中的主文档。在版本2.6+中默认为true

插入的案例如下:

db.comment.insert(
	{
		"articleid": "10000",
		"content" : "aaaaa",
		"userid" : "1001",
		"nickName" : "Rose",
		"createdatatime": new Data(),
		"likenum" : NumberInt(10),
		"state" : null
	}
)

2.批量插入

db.comment.insertMany([
	{
		"_id" : "1",
		"articleid": "10000",
		"content" : "aaaaa",
		"userid" : "1001",
		"nickName" : "Rose",
		"createdatatime": new Data(),
		"likenum" : NumberInt(10),
		"state" : null
	},
	{
		"_id" : "2",
		"articleid": "10000",
		"content" : "aaaaa",
		"userid" : "1001",
		"nickName" : "Rose",
		"createdatatime": new Data(),
		"likenum" : NumberInt(10),
		"state" : null
	}
])
#为了防止某条文档插入出现错误,可以 用下面的try catch
try{
	db.comment.insertMany([
		#...
	])
}catch(e){
	print(e)
}

3.查询文档

#以下的find如果替换成findOne,就相当于mysql的limit 1
db.collection.find()
或
db.collection.find({})

例子:查询userid=1003的文档

db.comment.find({userid:"1003"})

投影查询例子:如果查询结果我只想显示articleid,只需要后面再加一个json如下发所示

db.comment.find({userid:"1003"},{articleid:1})
#排除默认显示的主键
db.comment.find({userid:"1003"},{articleid:1,_id:0})

4.修改文档

直接举例子:
1)覆盖的修改,执行后其他字段会消失

#将id=1的文档的likenum设为1001
db.collection.updata({_id:"1"},{likenum:NumberInt(1001)})

2)局部修改,加上$set

#将id=1的文档的likenum设为1001
db.collection.updata({_id:"1"},{$set:{likenum:NumberInt(1001)}})

3)批量修改
以上的修改都只会修改符合条件的第一条文档。想要修改所有符合条件的文档,只需要增加第三参数,看下方:

#将id=1的文档的likenum设为1001
db.collection.updata({_id:"1"},{$set:{likenum:NumberInt(1001)}},{multi:true})

4)列值增长的修改

#对1号数据每次递增1
db.collection.updata({_id:"1"},{$inc:{likenum:NumberInt(1)}})

5.删除文档

删除文档的语法结构:

db.collection.remove(条件)

以下语句可以将数据全部删除

db.collection.remove({})

如果删除_id=1的记录,输入以下语句

db.collection.remove({_id:"1"})

6.分页查询

1.统计文档数量

#统计全部文档数
db.collection.count()
#统计符合条件的文档数
db.collection.count({字段:值})

2.返回制定条数的记录,在find方法后加上limit,默认是20

db.collection.find().limit(3)

3.skip方法同意接受一个数字参数作为跳过的记录条数。(前N个不要),默认值是0

db.collection.find().skip(3)

分页查询案例:要求每页2个

//第一页
db.collection.find().skip(0).limit(2)
//第二页
db.collection.find().skip(2).limit(2)
//第三页
db.collection.find().skip(4).limit(2)

7.排序查询

sort()方法对数据进行排序,sort()方法可以通过参数指定排序字段,用1和-1来指定排序升序和降序。
案例:查询对userid降序,对likenum升序

db.collection.find().sort({userid:-1,likenum:1})

skip,limit,sort三个放在一起执行的时候,先执行 sort,然后是skip,最后是limit!

8.正则的复杂条件查询

db.collection.find(字段:/正则表达式/)
或
db.集合.find(字段:/正则表达式/)

tips:正则表达式是js的语法,直接量的写法。
例1:查询内容包含开水的所有文档

db.collection.find({content:/开水/})

例2:查询内容以“”开水”开头的所有文档

db.collection.find({content:/^开水/})

9.比较查询

db.集合名.find({
	"字段":{运算符:value}
})
运算符作用
$gt大于
$gte大于等于
$lt小于
$lte小于等于
$ne不等于

10.包含查询

包含查询使用 $in操作符
例子:查询文档userid字段包含1003或1004的文档

db.collectionn.find({userid:{$in:["1003","1004"]}})

不包含使用$nin操作符
例子:查询文档userid字段不包含1003或1004的文档

db.collectionn.find({userid:{$nin:["1003","1004"]}})

11.条件连接查询

如果查询同时满足两个以上的条件,需要使用$and操作符将条件进行关联
例子:查询评论集合中likenum>=700且<2000的文档

db.collection.find({
	$and:[
		{likenum:{$gte:NumberInt(700)}},
		{likenum:{$lt:NumberInt(2000)}}
	]
})

如果两个以上的条件之间是或者的关系,我们使用$or操作符进行关联
例子:查询集合中userId为1003或者点赞数小于1000的文档记录

db.comment.find({
	$or : [
		{userid:"1003"},
		{likenum:{$lt:1000}}
	]
})

四、索引的基本操作

1.查看索引

db.collection.getIndexes()

2.索引的创建

db.collection.createIndex(keys,options)

例子:

#单字段索引
db.lzl.createIndex({userid:1})
#复合索引
db.lzl.createIndex({userid:1,nickname:-1})

在这里插入图片描述

3.索引的移除

db.collection.dropIndex(索引名)
或
db.collection.dropIndex({字段:排序方式(1|-1)})

#移除所有索引,注意:删除不了_id索引
db.collection.dropIndexes()

4.执行计划

在查询后面加上explain

db.collection.find(条件).explain()

如果用到了索引,stage如下:
在这里插入图片描述
如果没有用到索引,stage如下:
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:37:16  更:2022-03-15 22:37:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:51:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码