MongoDB 基于 Python 的简单使用
pymongo - Python driver for MongoDB

pymongo 官方手册

1. pymongo 安装

[1] - 安装 MongoDB:

sudo apt-get install mongodb

Ubuntu - Mongodb 4.x 版本安装

确保 Mongodb 安装正确, 测试:

mongo
> show dbs 

[2] - pymongo安装:

sudo pip install pymongo
# pymongo 升级
sudo pip install --upgrade pymongo

2. pymongo 简单使用

连接MongoDB 需要使用 PyMongo 库的 MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,第二个参数为端口port,端口如果不传默认是27017.

from pymongo import MongoClient 
client = MongoClient() # 连接 mongo, 运行实例. 默认 host 和默认端口
# client = MongoClient('localhost', 27017)
# client = MongoClient('mongodb://localhost:27017/') 
# client = MongoClient('host='localhost', port=27017')
# client = MongoClient('xxx.xxx.xxx.xxx')

db = client['databases_name']  # 获取数据库(database)
# db = Client.database_name
# print(db.list_database_names())

db.drop_database('database_name') # 删除某个数据库

# Collection 是存储在 MongoDB 的一组文档, 可以粗略地看做关系型数据库中的一个表 table.
coll = db['collection_name']  # 获取Collection
# coll = db.collection_name
print coll

MongoDB 中的数据是以 JSON 格式来表示和保存的, 如数据:

import time
test1 = {"author": "Test1",
         "text": "test text1",
         "tags": ["mongodb", "python", "pymongo"],
         "date": time.time() }
test2 = {"author": "Test2",
         "text": "test text2",
         "tags": ["mongodb", "python", "pymongo"],
         "date": time.time() }

2.1 插入数据

insert_one()函数, 插入单个数据到 collection.

tests = db.Test
test_id = tests.insert_one(test1).inerted_id
print test_id

确认数据已经被正确插入:

db.collection_names(include_system_collections=False)

2.2 读取数据

find_one() 函数——从数据库中调出已存储的数据
coll.find_one(),只能获取一个数据,如果数据库中存在多个数据时,返回的是第一个数据的值.

find()函数 - 从数据库中读取所有存储数据

[1] - 读取单个数据

print coll.find_one()

[2] - 打印全部数据:

for data in coll.find():
    print data

[3] - 获取特定数据:

for data in coll.find({'key':value}):
    print data

[4] - find() 函数可以传入多个键(key),每个键(key)以逗号隔开

for data in coll.find({'key1':value1, 'key2':value2}):
    print data

[5] - find() 函数查询条件不是固定的条件, 而是一个键值.

for data in coll.find('index': {'$gt': 100}):
    print data

这里的查询条件是, 所有 index 满足大于 100 的数据.

$lt 小于 {'index': {'$lt': 100}}

$gt大于 {'index': {'$gt': 100}}

$lte小于等于 {'index': {'$lte': 100}}

$gte大于等于 {'index': {'$gte': 100}}

$ne不等于 {'index': {'$ne': 100}}

$in在范围内 {'index': {'$in': [10, 100]}}

$nin不在范围内 {'index': {'$nin': [10, 100]}}

[6] - find() 函数正则项查询条件

for data in coll.find({'author': {'$regex': '^T.*'}}):
    print data

这里正则查询条件是, 用 $regex 来匹配查询条件, 即 ^T. 表示个所有 T 开头的数据.

$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 文本查询{'$text': {'$search': 'Mike'}}text类型的属性中包含Mike字符串

$where高级条件查询{'$where': 'obj.fans_count == obj.follows_count'}自身粉丝数等于关注数

[7] - count()函数

coll.count()  # Collection 里的数量
coll.find({'key':value})  # 某个key的数量

2.3. 删除文档

[1] - 删除满足条件的字段数据:

coll.delete_one({'type': 'image'})

[2] - 删除多个文档:

res = coll.delete_many({'type': 'image'})
print(res.deleted_count, "条数据已删除.")

[3] - 删除 coll 中所有文档数据:

res = coll.delete_many({})
print(res.deleted_count, "条数据已删除.")

2.4. 删除集合

db = client["tdb"]
col = db["tcoll"]
col.drop()

Reference

[1] - mongoDB 手册
[2] - pymongo 官方手册

Last modification:November 10th, 2020 at 04:17 pm