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)

posted @ 2022-04-03 14:43  Sean_Yang  阅读(81)  评论(0编辑  收藏  举报