pip3 install pymongo
# 无密码连接
import pymongo
mongo_client = pymongo.MongoClient("127.0.0.1", 27017)
# 有密码连接
import pymongo
mongo_client = pymongo.MongoClient("127.0.0.1", 27017)
mongo_auth = mongo_client.admin
# mongo_client["admin"]
mongo_auth.authenticate('用户名', '密码')
# 无密码连接
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:27017"%(mongo_username, mongo_password))
print(mongo_client.server_info()) # 判断是否连接成功
若没有 Database 和 Collection 则会自动创建
mongo_db = mongo_client["database"] # mongo_client.database
mong_collection = mongo_db["collection"] # mongo_db.collection
import datatime
info = {
"name": "Zarten",
"text": "Inserting a Document",
"tags": ["a", "b", "c"],
"date": datetime.datetime.now()
}
mongo_collection.insert_one(info)
import datetime
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)
datetime.datetime.now().isoformat()
mongo_collection.delete_one({'text' : 'a'})
mongo_collection.delete_many({'text' : 'a'})
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})
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})
mongo_collection.update_many(update_condition, {'$set' : info}, upsert= True)
find_condition = {
'name' : 'Banana',
'text' : 'peach'
}
find_result = mongo_collection.find_one(find_condition)
# 可以通过**projection**参数来指定需要查询的字段,包括是否显示 _id ,更多具体用法参考 [find()](https://link.zhihu.com/?target=https%3A//api.mongodb.com/python/current/api/pymongo/collection.html%23pymongo.collection.Collection.find)
find_condition = {
'name' : 'Zarten_3',
}
select_item = mongo_collection.find_one(find_condition, projection= {'_id':False, 'name':True, 'num':True})
print(select_item)
import datetime
find_condition = {
'date' : {'$gte':datetime.datetime(2018,12,1), '$lt':datetime.datetime(2018,12,3)}
}
select_item = mongo_collection.find_one(find_condition)
print(select_item)
find_condition = {
'name' : 'Banana',
'text' : '香蕉'
}
find_result_cursor = mongo_collection.find(find_condition)
for find_result in find_result_cursor:
print(find_result)
from bson.objectid import ObjectId
query_id_str = '5c00f60b20b531196c02d657'
find_condition = {
'_id' : ObjectId(query_id_str),
}
find_result = mongo_collection.find_one(find_condition)
print(find_result)
find_condition = {
'name' : 'Banana',
}
deleted_item = mongo_collection.find_one_and_delete(find_condition)
print(deleted_item)
find_condition = {
'name' : 'Zarten_2',
}
deleted_item = mongo_collection.find_one_and_delete(find_condition, sort= [('num', pymongo.DESCENDING)])
print(deleted_item)
find_condition = {
'name' : 'Zarten_1'
}
select_count = mongo_collection.count_documents(find_condition)
print(select_count)
mongo_collection.create_index('name', unique= True)
# list_indexs = mongo_collection.list_indexes()
# for index in list_indexs:
# print(index)
index_info = mongo_collection.index_information()
print(index_info)
del_index = mongo_collection.drop_index('name_1')
print(del_index)
mongo_collection.drop()
符号 | 含义 | 示例 |
---|---|---|
$lt | 小于 | {'age': {'$lt': 20}} |
$gt | 大于 | {'age': {'$gt': 20}} |
$lte | 小于等于 | {'age': {'$lte': 20}} |
$gte | 大于等于 | {'age': {'$gte': 20}} |
$ne | 不等于 | {'age': {'$ne': 20}} |
$in | 在范围内 | {'age': {'$in': 20}} |
$nin | 不在范围内 | {'age': {'$nin': 20}} |