mongdb数据库,最基本的操作当然还是增删改查,详见例子。
插入数据,可以用insert(),insert_one(),insert_many(),详见例子。插入之后,每一条数据会有一个id,我们也可以在插入前自己指定id,然后再插入。如下:
mylist = [
{ "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},
{ "_id": 2, "name": "Google", "address": "Google 搜索"},
{ "_id": 3, "name": "Facebook", "address": "脸书"},
{ "_id": 4, "name": "Taobao", "address": "淘宝"},
{ "_id": 5, "name": "Zhihu", "address": "知乎"}
]
x = mycol.insert_many(mylist)
和mysql数据库的比较,mongdb中的collection类似于mysql数据库中的表;mongdb中的collection.find()函数类似于mysql中的select * from table,都是查询所有数据的意思。
例子:
import pandas as pd
import pymongo
# 连接数据库服务器,获取客户端对象
mongo_client = pymongo.MongoClient("localhost",27017)
# 获取数据库,如果原先没有该数据库就创建该数据库
db = mongo_client.myDB # 这个myDB就是数据库的名字
# db = mongo_client['myDB'] # 也可以用这个写法
# 获取该数据库的集合,如果原先该数据库中没有该集合就创建该集合
my_collection = db.myCollection # myCollection就是集合的名字,可以把这个集合理解为mysql数据库中的表
# my_collection = db['myCollection'] # 也可以用这个写法
# 插入数据
tom={'name':'Tom','age':18,'sex':'男','hobbies':['吃饭','睡觉','打豆豆']}
alice={'name':'Alice','age':19,'sex':'女','hobbies':['读书','跑步','弹吉他']}
tom_id= my_collection.insert(tom) # 如果是插入一条数据,也可以用insert_one()函数,返回值是id值
alice_id= my_collection.insert(alice)
print("tom_id:",tom_id) # 也可以用tom_id.inserted_id来获得tom_id
print("alice_id:",alice_id)
mylist = [
{"name": "Taobao", "alexa": "100", "url": "https://www.taobao.com"},
{"name": "QQ", "alexa": "101", "url": "https://www.qq.com"},
{"name": "Facebook", "alexa": "10", "url": "https://www.facebook.com"},
]
mylist_id = my_collection.insert_many(mylist)
print("mylist_id:",mylist_id.inserted_ids) # inserted_ids可以用来获得mylist里面的id
print("——"*50)
# 查询
cursor=my_collection.find() # 类似于mysql里面的select * 操作,来获取这个collection中的全部条目
print(cursor.count()) # 获取条目的个数
for item in cursor:
print(item)
print("——"*50)
# 修改
my_collection.update({'name':'Tom'},{'$set':{'hobbies':['向Alice学习读书','跟Alice一起跑步','向Alice学习弹吉他']}})
for item in my_collection.find():
print(item)
print("——"*50)
# 删除
my_collection.remove({'name':'Tom'}) # 删除含{'name':'Tom'}的条目
# my_collection.remove() # 删除collection中的所有数据
for item in my_collection.find():
print(item)
输出:
tom_id: 5c6908880e20aa1b7cea57a4
alice_id: 5c6908880e20aa1b7cea57a5
mylist_id: [ObjectId('5c6908880e20aa1b7cea57a6'), ObjectId('5c6908880e20aa1b7cea57a7'), ObjectId('5c6908880e20aa1b7cea57a8')]
————————————————————————————————————————————————————————————————————————————————————————————————————
5
{'age': 18, 'name': 'Tom', '_id': ObjectId('5c6908880e20aa1b7cea57a4'), 'hobbies': ['吃饭', '睡觉', '打豆豆'], 'sex': '男'}
{'age': 19, 'name': 'Alice', '_id': ObjectId('5c6908880e20aa1b7cea57a5'), 'hobbies': ['读书', '跑步', '弹吉他'], 'sex': '女'}
{'name': 'Taobao', '_id': ObjectId('5c6908880e20aa1b7cea57a6'), 'alexa': '100', 'url': 'https://www.taobao.com'}
{'name': 'QQ', '_id': ObjectId('5c6908880e20aa1b7cea57a7'), 'alexa': '101', 'url': 'https://www.qq.com'}
{'name': 'Facebook', '_id': ObjectId('5c6908880e20aa1b7cea57a8'), 'alexa': '10', 'url': 'https://www.facebook.com'}
————————————————————————————————————————————————————————————————————————————————————————————————————
{'age': 18, 'name': 'Tom', '_id': ObjectId('5c6908880e20aa1b7cea57a4'), 'hobbies': ['向Alice学习读书', '跟Alice一起跑步', '向Alice学习弹吉他'], 'sex': '男'}
{'age': 19, 'name': 'Alice', '_id': ObjectId('5c6908880e20aa1b7cea57a5'), 'hobbies': ['读书', '跑步', '弹吉他'], 'sex': '女'}
{'name': 'Taobao', '_id': ObjectId('5c6908880e20aa1b7cea57a6'), 'alexa': '100', 'url': 'https://www.taobao.com'}
{'name': 'QQ', '_id': ObjectId('5c6908880e20aa1b7cea57a7'), 'alexa': '101', 'url': 'https://www.qq.com'}
{'name': 'Facebook', '_id': ObjectId('5c6908880e20aa1b7cea57a8'), 'alexa': '10', 'url': 'https://www.facebook.com'}
————————————————————————————————————————————————————————————————————————————————————————————————————
{'age': 19, 'name': 'Alice', '_id': ObjectId('5c6908880e20aa1b7cea57a5'), 'hobbies': ['读书', '跑步', '弹吉他'], 'sex': '女'}
{'name': 'Taobao', '_id': ObjectId('5c6908880e20aa1b7cea57a6'), 'alexa': '100', 'url': 'https://www.taobao.com'}
{'name': 'QQ', '_id': ObjectId('5c6908880e20aa1b7cea57a7'), 'alexa': '101', 'url': 'https://www.qq.com'}
{'name': 'Facebook', '_id': ObjectId('5c6908880e20aa1b7cea57a8'), 'alexa': '10', 'url': 'https://www.facebook.com'}
参考网址:https://blog.csdn.net/topleeyap/article/details/79029530
查询mongdb中的数据库和collection,如下:
import pymongo
# 连接数据库服务器,获取客户端对象
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
# dblist = myclient.list_database_names()
dblist = myclient.database_names() # 查看数据库中的所有的数据库名,返回值是一个list
# database_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_database_names()。
if "myDB" in dblist:
print("myDB数据库已存在!")
# 获取数据库,如果原先没有该数据库就创建该数据库
mydb = myclient['myDB']
# collist = mydb.list_collection_names()
collist = mydb.collection_names() # 查看mydb的所有collection,返回值是一个list
# collection_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_collection_names()。
if "sites" in collist: # 判断 sites 集合是否存在
print("sites 集合已存在!")
elif "myCollection" in collist:
print("myCollection 集合已存在!")
else:
print("no collection")
输出:
myDB数据库已存在!
myCollection 集合已存在!
注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
import pymongo
# 连接数据库服务器,获取客户端对象
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['newDB']
mycollection = mydb['newCollection']
上面两句并不能创建newDB和newCollection,因为后面没有内容插入。
参考网址:http://www.runoob.com/python3/python-mongodb-insert-document.html
http://www.runoob.com/python3/python-mongodb.html