1. 程式人生 > 其它 >MongoDB操作文件

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:%[email protected]: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)