MongoDB笔记

本文档详细介绍了MongoDB的安装、配置、数据操作及安全设置。内容包括MongoDB的安装教程,BSON格式的数据存储,数据库命令操作如创建、查询、修改和删除数据,以及如何设置用户权限和启用身份验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB笔记

数据库排名:https://db-engines.com/en/ranking
MongoDB安装与配置
官方网站:https://www.mongodb.com/
yum安装方式:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat
手动通用安装:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-linux
解压mongodb包

# tar -xvf mongodb-linux-x86_64-4.0.10.tgz
# mv mongodb-linux-x86_64-4.0.10  /usr/local/mongodb

创建存储目录与日志目录

# cd /usr/local/mongodb
# mkdir data  logs

启动mongodb

# cd /usr/local/mongodb
# bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb.log --fork

MongoDB里存储数据的格式文档形式,以BSON格式的文档形式:

mongodb库中的一些命令操作:

# cd /usr/local/mongodb
# bin/mongo  =>进入mongodb库
> show dbs  =>显示所有数据库
> use 数据库名称  =>切换数据库,没有则自动创建同名的数据库
> db.getName()  =>获取当前数据库的名称
> db.集合名称.insert(BSON格式的数据)  =>插入数据
> db.集合名称.find()=>显示集合中的所有数据(无格式)可以结合pretty()方法进行数据格式化输出
> db.集合名称。findOne()  =>只显示集合中满足条件的第一条数据(带格式)

案例:在abc数据库中创建一个goods的集合(集合===数据表),插入一条数据(title=>huawei p40、price=>5999.00、weight=>135)

> use abc
> db.goods.abc({title:"huawei p40",price:5999.00,weight:135})
或者可以分行输入
> db.goods.abc({
    title:"huawei  p40",
    price:5999.00
    weiht:135
})

☆插入多维数据
案例:向产品集合中插入一个文档(title=>mi 10,price=>3999.00,weight=>130,area=>hubei wuhan

> db.goods.insert({title:"mi 10",price:3999.00,weight:130,area:{province:"hubei",city:"wuhan"}})
或
> db.goods.insert({
	title:"mi 10",
	price:3999.00,
	weight:130,
	area:{
		province:"hubei",
		city:"wuhan"
	}
})

☆ 插入数组型数据
案例:向产品集合中插入一个文档(title=>iphone xr,price=>6888.00,weight=>140,area=>guangdong shenzhen,color:red,golden,blue,black)

> db.goods.insert({
	title:"iphone xr",
	price:6888.00,
	weight:140,
	area:{
		province:"guangdong",
		city:"shenzhen"
	},
	color:["red","golden","blue","black"]
})

MongoDB查询数据

普通查询

> db.集合名称.find()			=>显示集合中的所有数据(无格式)
> db.集合名称.findOne()		=>只显示集合中满足条件的第一条数据(带格式)     

条件查询

> db.集合名称.find({BSON格式的查询条件})
> db.集合名称.findOne({BSON格式的查询条件})

范围查询

mysql   <    <=    >    >=   !=
mongo  $lt  $lte  $gt  $gte  $ne

$lt = litter than                =>小于
$lte = litter than equal         =>小于等于
$gt = greater than               =>大于
$gte = greater than equal        =>大于等于
$ne = not equal                  =>不等于

多字段范围查询
案例:查询手机价格大于5000且weight重量大于130g的手机信息

> db.goods.find({
	price:{'$gt':5000},
	weight:{'$gt':130}
}).pretty()

多维字段查询
案例:查询手机产地在hubei wuhan的产品信息

> db.goods.find({'area.city':'wuhan'}).pretty()

数组条件查询

> db.goods.find({color:'black'})   => 查询满足其中之一即可显示
> db.集合名称.find({字段(数组):{'$all':[v1,v2]}})
> db.goods.find({color:{'$all':['black','gold']}})  => 满足查询条件所有的才可显示

限定字段查询
语法:db.集合名称.find({查询条件},{筛选条件})
显示为1,不显示为0
特别注意:field要是1必须所有都是1,要是0必须都是0,_id除外
案例:只显示产品集合中的title与price两个字段

> db.goods.find({},{title:1,price:1})

多条件或查询

> db.goods.find({'$or':[{price:{'$gt':5000}},{weight:{'$lt':140}}]})

排序查询

> db.goods.find().sort({字段:1或-1})
选项说明:
1代表正序排列,1 2 3 4
-1代表倒叙排列,4 3 2 1

count总记录查询

> db.goods.count()
> db.goods.find({price:{'$gt':5000}}).count()
> db.goods.count({price:{'$gt':5000}})

skip与limit限制查询
skip:跳过几个文档,定义从哪个位置开始查询,其默认值为0,代表从第一条数据开始
limit:限制数据的查询数量

> db.goods.find().limit(1);
> db.goods.find().skip(1).limit(1);

MongoDB修改数据
基本语法:

> db.集合名称.updateOne({查询条件},{修改条件})		修改匹配的第一条
> db.集合名称.updateMany({查询条件},{修改条件})		修改匹配的所有条
老版本的MongoDB其修改主要是通过db.集合名称.update({查询条件},{修改条件})

$set(标准)修改

> db.goods.updateOne({_id:ObjectId("5f63153786823f56134e2da4")},{'$set':{'price':3500}})
或
> db.goods.updateOne({
	_id:ObjectId("5f63153786823f56134e2da4")},
	{'$set':{'price':3500}}
)

> db.goods.updateOne({title:'huawei p40'},{'$set':{number:100}})

update命令与无 s e t 的 修 改 ( 慎 用 ) 没 有 set的修改(慎用) 没有 set()set关键字语法,把设置的字段进行修改,没有设置的就会被删除掉

> db.goods.update({title:'iphone xr'},{title:'xr'})

MongoDB删除数据

☆ 删除记录

> db.集合名称.deleteOne({删除条件})   删除匹配的第一条
> db.集合名称.deleteMany({删除条件})  删除匹配的多条
老版本MongoDB => db.集合名称.remove({查询条件})

☆ 删除字段
可以删除某个字段的操作,使用的是update语法的$unset

>db.goods.update({title:'huawei p40'},{'$unset':{weight:135}})

MongoDB的安全设置

关闭mongodb,添加conf/mongodb.conf文件

>use admin
>db.shutdownServer()
# cd /usr/local/mongodb
# mkdir conf
# vim conf/mongodb.conf
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
fork=true
logappend=true
port=27017
auth=false
bind_ip=127.0.0.1,10.1.1.26		=>	允许远程连接IP地址,也可以是0.0.0.0

添加mongodb.service脚步用systemctl来控制

# vim /usr/lib/systemd/system/mongodb.service
[Unit]
Description=MongoDB
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/conf/mongodb.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

# chmod +x /usr/lib/systemd/system/mongodb.service
# systemctl daemon-reload

用户权限
第一步:登录MongoDB,创建一个管理员账号

> use admin
> db.createUser({user:"root",pwd:"root",roles:["root"]})

第二步:关闭MongoDB

# systemctl stop mongodb

第三步:在配置文件mongodb.conf中加入auth参数

#  vim conf/mongodb.conf
...
auth=true
...

第四步:重启MongoDB

# systemctl start mongodb
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值