<center>python数据库操作MySQL-MongoDB-Redis之二 MongoDB</center>
一 MongoDB 在win10下的安装
-
从官网下载完安装包后,开始安装:(我这以最新的mongodb-win32-x86_64-2008plus-ssl-3.6.3-signed.msi版本举例)
安装过程: custom是自定义安装选项,建议安装在非系统盘(C盘)上
关键点来了,就在下一步操作:
如果这不取消安装,会发现有的电脑死活安装不上,原因就在这compas问题上
- 再安装可视化界面(compass)(https://www.mongodb.com/download-center?jmp=docs&_ga=2.208589714.169613539.1518053388-361642939.1518053388#compass)
这样可以防止出现MongoDB安装不成功 - 现在配置启动MongoDB的服务以及将它设置为windows服务
-
使用快捷键快速呼出本地服务项: win+R 弹出运行框
-
在出现的运行窗口中输入services.msc 然后按确定按钮,或者直接回城即可调出本地服务项
-
找到mongodb服务,嘿嘿这提前说了,这就是我们下一步需要配置的mongodb服务
-
现在开始配置MongoDB服务:在cmd命令下跳转到D:\MongoDB\Server\3.6\bin目录下
先创建MongoDB的config配置文件 用记事本打开,输入以下内容
datapath=D:\MongoDB\data
-
logpath=D:\MongoDB\log
可设置开机自启动,或者手动启动关闭,
开启MongoDB服务,以管理员身份启动cmd命令窗口。切换到MongoDB下的bin目录下输入net start MongoDB 提示xxx服务正在启动 xxx服务已经启动成功,就可以输入mongo.exe运行客户端了。
这里有个小点:想要直接输入mongo.exe就能运行MongoDB,前提要将它添加到系统的环境变量里面去,详见以下步骤
-
找到此电脑标识
-
右键选择属性
-
选择高级系统设置
-
详细步骤按序号进行(这种操作,使用任何软件都是异曲同工的事)
-
使用快捷键快速呼出本地服务项: win+R 弹出运行框
二 MongoDB在ubuntu:1604下的安装
- 安装方式一
- 从官网下载linux/mongodb-linux-x86_64-ubuntu1604-3.6.3.tgz
- 解压 tar -zxvf mongodb-linux-x86_64-ubuntu1604-3.6.3.tgz
- 移动到/usr/local目录下
sudo mv mongodb-linux-x86_64-ubuntu1604-3.6.3 /usr/local/mongodb - 将可执行文件添加到PATH路径中
export PATH=/usr/local/mongodb/bin:$PATH
- 安装方式二
- 直接简单粗暴,不需要下载源文件,可以直接用apt-get命令进行安装.打开终端,输入以下命令: sudo apt-get install mongodb
- 安装完成后,在终端输入以下命令查看MongoDB版本:
mongo -version - 启动与关闭mongodb命令如下:
service mongodb start #启动mongodb服务
service mongodb stop #终止mongodb服务 - 默认设置MongoDB是随ubuntu系统启动自启动的,输入命令查看是否启动成功 pgrep mongo - I
- 卸载mongodb
sudo apt-get --purge remove mongodb mongodb-clients mongodb-server
Mac端下载与安装 与linux大致相同就不再多写
MongoDB数据库的常用操作命令
show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表table)
show users:显示所有用户
use yourDB:切换当前数据库至yourDB
db.help() :显示数据库操作命令
db.yourCollection.help() :显示集合操作命令,yourCollection是集合名
数据库的CRUD操作
- 将单个文档或多个文档插入并保存文档
db.collection_name.insert({'bar':'baz'}) #这一操作会给文档增加一个"_id"键(原来没有的话),然后保存到MongoDB中
- 单个插入
db.collection_name.insertone({'bar':'baz'}) - 批量插入
db.collection_name.insermany() #可以将多个文档插入到一个集合中
-
db.collection.update()
当与 选项一起使用时。upsert: true
-
db.collection.updateOne()
当与选项一起使用时。upsert: true
-
db.collection.updateMany()
当与选项一起使用时。upsert: true
-
db.collection.findAndModify()
当与选项一起使用时。upsert: true
-
db.collection.findOneAndUpdate()
当与选项一起使用时 。upsert: true
-
db.collection.findOneAndReplace()
当与选项一起使用时 。upsert: true
-
db.collection.save()
。 -
db.collection.bulkWrite()
。
- 查询文件
db.collection_name.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
若不指定 projection,则默认返回所有键,指定 projection 格式如下,有两种模式
db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的键,返回其他键
想要较可读性推荐使用pretty()方法
db.collection.find().pretty()
4.更新数据
db.collection_name.update(criteria,objNew,upset,multi)
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
- 删除数据
db.collection_name.remove() 现在官方更推荐使用delete() 和detelemany()方法
删除集合下全部文档
db.inventory.deleteMany({}) #推荐使用
删除status等于A的全部文档
db.inventory.deleteMany({ status : "A" }) #推荐使用
删除status等于D的一个文档
db.inventory.deleteOne( { status: "D" } ) #推荐使用
注意
- 删除数据库的时候,切记要先切换到该数据库才能删除
use db_name
db.dropDatabase() - MongoDB偏向于易用性,默认是没有开启用户权限的.
- 每次执行完程序,都可以返回shell模式查看结果
输入 db.student.find() - 3.4版新增功能
下面的命令插入123.40
作为NumberDecimal
具有和不具有周围的值引号:
db.json.insert({ decimalQuoted : NumberDecimal("123.40") })
python与MongoDB的交互
- 创建数据库
import pymongo
client = pymongo.MongoClient('localhost', 27017) 或
client = MongoClient('mongodb://localhost:27017/') - 连接数据库
db = client.db_name 或 db = client"db_name"'] - 连接集合
collection = db.collection_name 或 collection = db['collection_name'] - 查看数据看下所有集合名称
db.collection_names() - 插入数据
collection.insert() - 查看集合数据的总数
collection.find().count() - 查询结果排序
collection.find().sort("key1") # 默认为升序
collection.find().sort("key1", pymongo.ASCENDING) # 升序
collection.find().sort("key1", pymongo.DESCENDING) # 降序
collection.find().sort([("key1", pymongo.ASCENDING), ("key2", pymongo.DESCENDING)]) #多列排序
感谢您的阅读,以上是本人遇到过或学习过程记录的笔记,水平有限,仅供参考,如果发现错误请及时联系作者,谢谢!
欢迎进我的个人博客Danniel'S,不定时更新,祝
共同进步!