1.简介
MongoDB数据库是由C++语言编写的肥关系型数据库,是一个基于分布式文件存储的开源数据库系统。
2.下载安装
官方网站:点这里 (1)我用的是在Windows下安装,大家有用其他的可以自己去百度一下,首先下载msi安装包,下载后点击安装,我这里的安装路径是E:\MongoDB,大家着自己选择自己想安装的路径,安装成功后,找到MongoDB的安装目录,在bin目录旁新建同级目录data,在data文件夹下建立db文件夹用于存储数据。
(2)在bin目录下打开cmd命令行,输入
mongod --dbpath “E:\MongoDB\data\db”
运行MongoDB服务,如果想一直使用该服务,就不能关闭命令行,当然,还有另外一种方法,可以一直开启MongoDB服务,
首先以管理员身份运行cmd,同时在bin目录旁建立同级目录logs,新建mongodb.log文件,在命令行里输入
cd E:/MongoDB/bin
进入MongoDB安装目录下的bin文件夹,继续在cmd窗口输入
mongod --bind_ip 0.0.0.0 --logpath “E:\MongoDB\logs\mongodb.log” --logappend --dbpath “E:\MongoDB\data\db” --port 27017 --serviceName “MongoDB” --serviceDisplayName “MongoDB” --install
运行此命令即可安装服务,在电脑的服务界面就能看到MongoDB服务已经安装成功。
这样,MongoDB就配置成功了。
3.连接数据库
我是在python3的环境下连接数据库的,首先打开cmd命令行输入
pip install pymongo
安装需要使用的PyMongo库,如果上面下载太慢,可以输入下面的命令
pip install -i http://pypi.douban.com/simple/ pymongo
利用豆瓣源可快速安装。
接下来就开始连接了
import pymongo
client = pymongo.MongoClient(host = 'localhost',port = 27017)
db = client['ts'] #ts是建立的数据库名称
collection = db['product'] #product是在ts数据库中建立的集合名称
4.插入数据
执行insert()方法
s = {
'id':'01',
'name':'xiaoming',
'age':10
}
ins = collection.insert(s)
运行之后就可以在mongoDB数据库中看到已经插入这条记录
还有insert_one(): 插入一个记录,insert_many()插入多条记录。
5.查询.
可以通过find()方法和find_one()方法,find_one()得到的是一个结果,find()得到的是一个生成器对象,例如:
ins = collection.find_one({'age':10})
print(ins)
就可查到你想要找的数据,返回的是字典类型数据。
或者通过ObjectId查询,这个Id是MongoDB在插入数据自动添加的,
当需要获取年龄大于等于10的记录,可以使用比较符号。
ins = collection.find({'age':{'$gte',10}})
print(ins)
还有其他的比较符号,如下:
符号 | 含义 | 示例 |
$lt | 小于 | {‘age’:{’$lt’:20}} |
$gt | 大于 | {‘age’:{’$gt’:20}} |
$lte | 小于等于 | {‘age’:{’$lte’:20}} |
$gte | 大于等于 | {‘age’:{’$gte’:20}} |
$ne | 不等于 | {‘age’:{’$ne’:20}} |
$in | 在范围内 | {‘age’:{’$in’:[20,23]}} |
$nin | 不在范围内 | {‘age’:{’$nin’:[20,23]}} |
还可以用正则匹配查询,一些功能符号,如下:
符号 | 含义 | 示例 | 示例含义 |
$regex | 匹配正则表达式 | {‘name’:{’$regex’:’^M.*’}} | name以M开头 |
$exists | 属性是否存在 | {‘name’:{’$exists’:True}} | name属性存在 |
$type | 类型判断 | {‘age’:{’$type’:‘int’}} | age的属性是int |
$mod | 数字摸操作 | {‘age’:{’$mod’:[5,0]}} | 年龄模5余0 |
$text | 文本查询 | {‘KaTeX parse error: Expected '}', got 'EOF' at end of input: text':{'search’:‘xiaoming’}} | text类型的属性中包含xiaoming的字符串 |
$where | 高级条件查询 | {’$where’:‘obj.fans == obj.follows_count’} | 自身粉丝数等于关注数 |
更详细的用法,请在官方文档中查阅。
6.更新
使用update()方法
con = {'name':'xiaoming'}
s = collection.find_one(con)
s['age']=20
ins =collection.update(con,s)
先找到记录,然后进行更新操作。
还有两种方法,update_one()和update_many(),大家就自己探索吧。
7.删除
使用remove()方法
s = collection.remove({'name':'xiaoming'})
print('删除成功')
根据name的值来删除符合条件的记录。
同时还有其他两种方法,delete_one()和delete_many()分别为删除符合条件的第一条数据和删除符合条件的所有数据
8.小结
PyMongo还提供了一些其他的方法,详细的大家可以看官方文档https://pypi.org/project/pymongo/
上面的只是我学的一点拙见,有错误希望大家指出来,我会立即更改,大家有什么想法也可以和我讨论一下。
推荐大家一个MongoDB可视化的软件**Robo 3T **