首页 > 其他分享 >Mongo安装及基本命令

Mongo安装及基本命令

时间:2022-09-25 19:33:31浏览次数:92  
标签:Mongo age db 查询 命令 users 安装 find name

一、MongoDB介绍

MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写,其将数据存储为一个文档,数据结构由键值对形式表示,文档型类似json对象,字段值可以包含其他文档,数组及文档数组。MongoDB存储的是Bjson类型,是二进制序列化的形式,也支持嵌套。
常用数据类型:

  • 字符串String
  • 整型数值Integer
  • 布尔值 Boolean
  • 数组 Array
  • 时间戳 Timestamp
  • 对象,内嵌文档 Object
  • 空值 Null
  • 日期时间 Date
  • 对象ID Object ID
  • 二进制数据 Binary Data
  • 代码类型 Code
  • 正则表达式 Regular expression

二、Ubuntu安装MongoDB

  1. 传统方式外部安装

tar -zxvf mongodb-linux-x86_64-ubuntu2004-6.0.1.tgz 
mv -r mongodb-linux-x86_64-ubuntu2004-6.0.1/ /usr/local/mongodb

环境变量配置 vim /etc/profile:
# set mongo dev
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin

source /etc/profile
cd /usr/local/mongodb
mkdir -p data/db
chmod 777 data/db
mkdir logs && cd logs && touch mongodb.log

# 设置启动配置
cd /usr/local/mongodb/bin 
vi mongodb.conf

插入下列内容:
dbpath = /usr/local/mongodb/data/db #数据文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log #日志文件存放目录
port = 27017 #端口
fork = true #以守护程序的方式启用,即在后台运行

启动mongod数据库服务,以配置文件的方式启动
cd /usr/local/mongodb/bin
./mongod -f mongodb.conf

安装mongodb-clients
apt install mongodb-clients

2)使用docker安装。在容器启动

docker pull mongo:版本号xxx  //拉镜像
docker run -d --name mongo --p 27017:27017 mongo:版本号xxx // 运行镜像
docker exec -it xxx bash  // 进入mongo 容器
mongo //启动mongo客户端

三、MongoDB常用命令

3.1、操作库

查看所有库
show dbs | show databases;

创建或者切换数据库  # 连接后默认进入的是test的库
use xxx;  # 库中无集合数据时,查看库时不显示

查看当前所在的库   
db

插入数据
db.users.insert({name:"jude"});

删除数据库
db.dropDatabase(); # 删除有数据的库后,show dbs不展示,db查看还是在当前库

3.2、操作集合(集合类似关系型数据库中的表,无修改操作)

查看库中所有集合
show collections | show tables;

创建集合
(显式创建,集合存在)
db.createCollection('集合名称', [options])
db.createCollection('pro',{max:100,capped:true,size:50000})

(隐式创建,集合不存在)
db.temp.insert({name:"zhangsan"});
db.emp.insert({name:"wu"})

删除集合
db.集合名称.drop();

3.3、文档相关操作(集合中最小单元) 官方文档

每条文档放入集合中时,会自动维护一个_id,也可手动指定

1、创建

a. 单条文档创建

db.users.insert({name:'zhangsan', age:13, birthday:"2017-01-02"})

b. 多条文档创建(insertMany或insert)

db.users.insertMany([{name:"wuw",age:12},{_id:1,name:"hha",age:22}])
db.users.insert([{name:"hy",age:32},{name:"word",age:14}])

c. js脚本方式创建

for(let i=3;i<9;i++){
 	db.users.insert({_id:i,name:"lili"+i,age:i+12});
} 

2、删除文档

db.集合名词.remove(<query>,{
	justone: <boolean>,
	writeConcern: <document>
}) 
可选参数:
query : 删除条件
删除的配置对象 {justone:1或true删一条,false删匹配到的所有行, writeConcern:抛出的异常级别}

db.集合名词.remove({}) # 不带条件则删除所有,删除后集合还是存在的

删除下划线为1的文档记录
db.users.remove({_id:1})
db.users.remove({_id:ObjectId("632f03048e7c53ca629b7715")})

删除多条数据

3、更新

db.集合名.update(
	<query>,
	<update>, 对象或者操作符($,$inc..) 可理解为sql update查询内set后面的
	{
		upsert: <boolean>, 默认值false,不插入。true时,这条记录不存在会插入进去
		multi: <boolean>,  默认值false,多条时只更新一条,true查询匹配多条时全部更新
		writeConcern: <document>  抛出的异常级别
	}
);
query: 基于哪些条件更新  必输
update: 更新的内容  必输
更新配置对象{}: 非必输

更新时默认先将原内容删除在重新插入,不指定$set,会覆盖原内容,不保留原内容,如下图,更新后name没有了

$set 保留原来数据更新,但是只更新符合条件的第一条数据。

不更新age则保留之前的

不指定multi true,默认只更新匹配到的第一条

指定时,匹配到会全部更新

指定upsert,不存在时,则创建文档

4、文档查询

find方法以非结构化的方式显示所有文档,如果需要结构化,需要使用find().pretty(),可以以美观的格式化的显示文档
(超过一定长度才会格式化)。

db.集合名词.find().pretty()
  1. 条件查询
查询年龄24的
db.users.find({age:24}) 
查询年龄小于28的
db.users.find({age:{$lt:28}})
查询年龄小于等于28的
db.users.find({age:{$lte:28}})
查询年龄大于24的
db.users.find({age:{$gt:24}})
查询年龄大于等于24的
db.users.find({age:{$gte:24}})
查询年龄不等于24的
db.users.find({age:{$ne:24}})

2) AND查询

db.集合名词.find(key1:value1, key2:value2,...).pretty()
查不到返回空
and查询时相同字段出现多次时,以后面字段为主


例:查询年龄24,名字是wul_0的
db.users.find({age:24,name:"wul_0"})

多条件查询时,同一个查询条件写多次时,后面的会覆盖前面的如:
查询年龄24的,且年龄大于等于28的,后面条件覆盖前面的会查询年龄大于等于28的
db.users.find({age:24, age:{$gte:28}})

3) OR查询

db.集合名词.find(
	{
		$or:[
			{key1:value1},{key2:value2}
		]
	}
).pretty()


例:db.users.find({$or:[{name:"wul_1"},{age:28}]})  # 查询名字是wul_1或者年龄28的
db.users.find({$or:[{name:"wul_1"},{age:{$gte:28}}]}) # 查询名字是wul_1或者年龄大于等于28的

4) AND和OR联合查询

# 查询年龄大于等于24,且名字为wul_8或wul_0的
db.users.find({age:{$gte:24},$or:[{name:"wul_8"},{name:"wul_0的"}]})

5) 数组中查询

db.users.find({likes:"music"})
{ "_id" : 11, "age" : 28, "likes" : [ "footballxx", "music", "basketball" ], "name" : "wulxx_11" }

6) $size 按数组长度查询

db.users.find({likes:{$size:3}})
{ "_id" : 11, "age" : 28, "likes" : [ "footballxx", "music", "basketball" ], "name" : "wulxx_11" }

7) 模糊查询 通过正则实现

db.users.find({name:/wu/})   名字中包含wu的

8) 排序

db.集合名称.find().sort({name:1,age:1});  # 类似order by name,age
1  升序  -1 降序

# 按年龄降序
db.users.find().sort({age:-1}) 
# 按年龄降序,按名字升序
db.users.find().sort({age:-1, name:1})

9) 分页

排序结果分页处理
db.集合名称.find().sort({条件}).skip(start).limit(rows)  # 类似于limit start, rows


# 起始条数为page-1 
db.users.find().sort({age:-1,name:1}).skip(page-1).limit(2)


# 查询总条数
db.集合名称.count()
db.orders.find({name:'order_100'}).count()  # 加在条件后计数

db.orders.find({_id:{$gt:500}}).count() 

10) 去重 ,返回去重字段的数组

db.集合名称.distinct('字段')

db.users.distinct('age')
# [ 24, 28 ]

11) 指定返回字段

db.集合名称.find({条件}, {name:1, age:1})
第二个参数,1时返回该字段,0时不返回。 0和1不能同时使用

# 只返回name字段,_id为文档的唯一标识默认会返回
db.users.find({},{name:1})

# 不返回name字段
db.users.find({},{name:0})

标签:Mongo,age,db,查询,命令,users,安装,find,name
From: https://www.cnblogs.com/hikk/p/16723352.html

相关文章

  • 记录黑苹果OpenCore 安装-v跑码结束显示logo、进度条、光标,但不进入系统问题
    型号:Dell Inspiron15-3559    核显:HD520OS版本: macOSCatalina10.15.6(19G2021) 问题-v模式启动,跑码结束,显示苹果logo和进度条,鼠标光标正常显示,连......
  • 批量安装包
      写进requirement.txt里面 然后pip-rrequirement.txt  里面长这样:    ......
  • Excalidraw:开源实用的白板画图工具(在线/本地安装)
    Excalidraw是一款开源的画图工具,可以画一些简单的流程图,显示效果像是用笔在纸上画的一样,操作简单明了,可以在线使用或者通过谷歌浏览器插件安装在本地。在线使用网址:Excal......
  • K8S系列(四)——常用命令汇总
    【前言】  K8S虽然可以通过dashboard等图形化界面去管理,但是一些常用命令我们还是要记下。为了方便查看,命令按照资源类型的各种操作命令来分类,部分命令可能会存在重复情......
  • 基本的Dos命令
    打开CMD的方式开始+系统+命令提示符Win键+R输入cmd打开控制台在任意的文件夹下面,按住Shift键+鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏前面加上c......
  • 安装及管理程序6
    一、源码包的优缺点优点:1)开源2)可以自由选择需要的功能3)适合自己系统,更加稳定,效率也更高4)卸载方便缺点:1)安装步骤较多,尤其是在安装较大的软件集合时,......
  • MySQL数据库安装保姆级教程及1045错误和2058问题解决
    使用Mysql的zip压缩包解压版,下载之后需进行一定的配置,才能使用它。下面对Mysql压缩包版的安装方法进行详细的描述,如有疑问或错误,望及时反馈。首先,mysql的官方下载地址......
  • 安装及管理文件
    源码编译安装优点:契合系统兼容性强如果你可以看懂源代码,修改新增功能比较自由缺点:如果编译出了问题,你看不懂源代码,无法解决安装过程复杂没有统一的管理人员安......
  • linux文件内容查看命令 实验报告
    实验任务Linux查看文件基础命令 实验环境一台centos7 实验步骤1.显示文件全部内容Cat+想要查看的文件名  2.显示文件全部内容并加行号  3.空行不......
  • Linux命令
    1.1 根目录 /bin/存放系统命令,普通用户和root都可以执行。放在/bin下的命令在单用户模式下也可以执行/boot/系统启动目录,保存与系统启动相关的文件,如内核文......