MongoDB操作文档
1、连接方式
1
# 无密码连接
import pymongo
mongo_client = pymongo.MongoClient('127.0.0.1', 27017)
# 有密码连接
import pymongo
mongo_client = pymongo.MongoClient('127.0.0.1', 26666)
mongo_auth = mongo_client.admin #或 mongo_client['admin'] admin为authenticationDatabase
mongo_auth.authenticate('用户名', '密码')
2
#无密码连接
import pymongo
mongo_client = pymongo.MongoClient('mongodb://127.0.0.1:27017')
#有密码连接
import pymongo
import urllib.parse
mongo_username = urllib.parse.quote_plus('你的用户名')
mongo_password = urllib.parse.quote_plus('密码')
mongo_client = pymongo.MongoClient('mongodb://%s:%s@127.0.0.1:26666' % (mongo_username, mongo_password))
print(mongo_client.server_info()) #判断是否连接成功
2、获取Database和Collection
2.1
mongo_db = mongo_client['你的database']
mongo_collection = mongo_db['你的collection']
2.2
mongo_db = mongo_client.你的database
mongo_collection = mongo_db.你的collection
3、CURD操作
增
3.1、插入单条数据insert_one()
info = {
'name' : 'Zarten',
'text' : 'Inserting a Document',
'tags' : ['a', 'b', 'c'],
'date' : datetime.datetime.now()
}
mongo_collection.insert_one(info)
3.2、插入多条数据insert_many()
info_1 = {
'name' : 'Zarten_1',
'text' : 'Inserting a Document',
'tags' : ['a', 'b', 'c'],
'date' : datetime.datetime.now()
}
info_2 = {
'name' : 'Zarten_2',
'text' : 'Inserting a Document',
'tags' : [1, 2, 3],
'date' : datetime.datetime.now()
}
insert_list = [info_1, info_2]
mongo_collection.insert_many(insert_list)
3.3、插入字符串类型的时间
在插入字符串时间时,mongodb会自动转成了 ISOdate类型,若需要时间在mongdb也是字符串类型,需要这样操作
datetime.datetime.now().isoformat()
删
3.4、删除一条数据delete_one()
删除一条数据。若删除条件相同匹配到多条数据,默认删除第一条
mongo_collection.delete_one({'text' : 'a'})
3.5、删除多条数据delete_many()
删除满足条件的所有数据
mongo_collection.delete_many({'text' : 'a'})
改
3.6、更新单条数据update_one()
只会更新满足条件的第一条数据
update_one
(filter,update,upsert=False,bypass_document_validation=False,collation=None,array_filters=None,session=None)
- 第一个参数 filter:更新的条件
- 第二个参数 update : 更新的内容,必须用$操作符
- 第三个参数 upsert : 默认False。若为True,更新条件没找到,则插入更新的内容
info = {
'name': '桃子 ',
'text': 'peach',
'tags': [1, 2, 3],
'date': datetime.datetime.now()
}
update_condition = {'name' : 'Zarten_2'} #更新的条件,也可以为多个条件
#更新条件多个时,需要同时满足时才会更新
# update_condition = {'name' : 'Pear',
# 'text' : '梨子'}
mongo_collection.update_one(update_condition, {'$set' : info})
3.7、更新多条数据update_many
更新满足条件的所有数据
info = {
'name': 'Zarten',
'text': 'a',
'tags': [1, 2, 3],
'date': datetime.datetime.now()
}
update_condition = {'text' : 'a'} #更新的条件
#更新条件多个时,需要同时满足时才会更新
# update_condition = {'name' : 'Pear',
# 'text' : '梨子'}
mongo_collection.update_many(update_condition, {'$set' : info})
3.7、更新时,若无满足条件,则插入数据
通过设置upsert为True即可
info = {
'name': 'Banana',
'text': '香蕉',
'tags': [1, 2, 3],
'date': datetime.datetime.now()
}
update_condition = {'text' : 'a'} #更新的条件
#更新条件多个时,需要同时满足时才会更新
# update_condition = {'name' : 'Pear',
# 'text' : '梨子'}
mongo_collection.update_many(update_condition, {'$set' : info}, upsert= True)
查
作者信息
Sean
Stay hungry,Stay foolish.