mongodb简易安装与使用

  1. 原因:
    业务有个系统需要开发一些新需求,开发要一套测试系统用于开发与测试,这套系统使用的DB是mongodb,所以就搭一套。
  2. 安装:
    确定历史版本mongo --version , 发现是3.2.8版本。
    最简单的方法是直接把生产上的mongodb文件拷贝下来,复制过去就行,但无奈生产的机器安全级别太高,无法触碰,只好上官网下载比较新的3.2.22版本。
    下载地址: https://www.mongodb.com/try/download/community
cd /home
# ftp传入 安装文件
tar -zxvf mongodb-linux-x86_64-rhel62-3.2.22.tgz
mv mongodb-linux-x86_64-rhel62-3.2.22 mongodb
mkdir -p /mgdb_dt
cd mongodb
echo "#!/bin/bash
nohup /home/mongodb/bin/mongod --dbpath /mgdb_dt > mongod.log 2>&1 &" > start.sh
chmod +x start.sh
echo "PATH=$PATH:/home/mongodb/bin
export PATH" >> ~/.bash_profile
source ~/.bash_profile

安装验证

[root@OEL6 mongodb]# mongod --version
db version v3.2.22
git version: 105acca0d443f9a47c1a5bd608fd7133840a58dd
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel62
    distarch: x86_64
    target_arch: x86_64
  1. 启动:
    直接运行启动脚本
sh /home/mongodb/start.sh > /home/mongodb/start.log 2>&1

  1. 工具:

    可以直接使用mongo命令行,但windows的图形化工具显然更简单些。
    MongoDB Compass、Robo 3T等

  2. 使用:
    登录

[root@OEL6 mongodb]# mongo
MongoDB shell version: 3.2.22
connecting to: test
Server has startup warnings: 
2020-09-16T14:22:38.512+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2020-09-16T14:22:38.512+0800 I CONTROL  [initandlisten] 
2020-09-16T14:22:38.512+0800 I CONTROL  [initandlisten] 
2020-09-16T14:22:38.512+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-09-16T14:22:38.512+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-09-16T14:22:38.512+0800 I CONTROL  [initandlisten]

查看已有库

> show dbs
admin  0.000GB
local  0.000GB
test   0.207GB

切换/创建库(mongodb向没有的库切换时会自动创建库)

> use test
switched to db test

查看已有表(集合)

> show collections
test

插入记录/新建表(同创建库,向没有的表插入数据就会自动建表)

> db.newtb.insert({"xh":"123456","name":"测试姓名"})
WriteResult({ "nInserted" : 1 })
> show collections
newtb
test

查询记录:查询全部记录<限制返回5条记录>

> db.newtb.find().limit(5)
{ "_id" : ObjectId("5f61b3af7d40e48cc5efe75f"), "xh" : "123456", "name" : "测试姓名" }

查询记录:按条件查询

> db.newtb.find({"xh":"654321"})
> db.newtb.find({"xh":"123456"})
{ "_id" : ObjectId("5f61b3af7d40e48cc5efe75f"), "xh" : "123456", "name" : "测试姓名" }

更新记录:只更新符合条件的第一条记录

> db.newtb.update({"xh" : "123456"} , {$set: {"name":"修改姓名"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.newtb.find({"xh":"123456"})
{ "_id" : ObjectId("5f61b3af7d40e48cc5efe75f"), "xh" : "123456", "name" : "修改姓名" }

更新记录:更新全部符合条件的记录需添加参数{multi:true}

> db.newtb.insert({"xh":"123456","name":"测试姓名2"})
WriteResult({ "nInserted" : 1 })
> db.newtb.find({"xh":"123456"})
{ "_id" : ObjectId("5f61b3af7d40e48cc5efe75f"), "xh" : "123456", "name" : "修改姓名" }
{ "_id" : ObjectId("5f61b6127d40e48cc5efe760"), "xh" : "123456", "name" : "测试姓名2" }
> db.newtb.update({"xh" : "123456"} , {$set: {"name":"修改姓名"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
> db.newtb.find({"xh":"123456"})
{ "_id" : ObjectId("5f61b3af7d40e48cc5efe75f"), "xh" : "123456", "name" : "修改姓名" }
{ "_id" : ObjectId("5f61b6127d40e48cc5efe760"), "xh" : "123456", "name" : "测试姓名2" }
> db.newtb.update({"xh" : "123456"} , {$set: {"name":"修改姓名"}}, {multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 1 })
> db.newtb.find({"xh":"123456"})
{ "_id" : ObjectId("5f61b3af7d40e48cc5efe75f"), "xh" : "123456", "name" : "修改姓名" }
{ "_id" : ObjectId("5f61b6127d40e48cc5efe760"), "xh" : "123456", "name" : "修改姓名" }

删除记录:

> db.newtb.deleteMany({"xh":"123456"})
{ "acknowledged" : true, "deletedCount" : 2 }
> db.newtb.find().limit(5)
> 
  1. 同步:
    业务需要mongodb与外部数据库(oracle+mysql)的数据保持一致。
    在业务允许数据延迟的场景下,使用ETL方案。最简实现方法:Mongodb数据同步。
    当业务要求数据实时的场景下,使用日志方案。最简实现方法:Oracle实时向Mongodb同步。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值