爬虫類のMongoDBストレージ(下)

7988 ワード

1カウント
1コード
import pymongo
#     ,  MongoDB IP     ,          host,
#         port(         ,   27017)
client = pymongo.MongoClient(host='localhost', port=27017)
# MongoClient      host       MongoDB      ,  mongodb  
#client = pymongo.MongoClient('mongodb://localhost:27017/')
# client test      test   。
db = client.test
#            
# db = client['test']
#           
collection = db.students
#         
count = collection.find().count()
print(count)
#            
count = collection.find({'age': 20}).count()
print(count)

2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py
2
1

2ソート
1コード
import pymongo
#     ,  MongoDB IP     ,          host,
#         port(         ,   27017)
client = pymongo.MongoClient(host='localhost', port=27017)
# MongoClient      host       MongoDB      ,  mongodb  
#client = pymongo.MongoClient('mongodb://localhost:27017/')
# client test      test   。
db = client.test
#            
# db = client['test']
#           
collection = db.students
#     sort()  ,                 
#      pymongo.DESCENDING
results = collection.find().sort('name', pymongo.ASCENDING)
print([result['name'] for result in results])

2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py
['Jordan', 'Mike']

さんへんい
1点目
いくつかの要素だけを取りたいかもしれませんが、skip()メソッドを使用していくつかの位置をオフセットすることができます.
2 skip
2.1コード
import pymongo
#     ,  MongoDB IP     ,          host,
#         port(         ,   27017)
client = pymongo.MongoClient(host='localhost', port=27017)
# MongoClient      host       MongoDB      ,  mongodb  
#client = pymongo.MongoClient('mongodb://localhost:27017/')
# client test      test   。
db = client.test
#            
# db = client['test']
#           
collection = db.students
#     sort()  ,                 
#      pymongo.DESCENDING
# results = collection.find().sort('name', pymongo.ASCENDING)
# print([result['name'] for result in results])
#     2,        ,           
results = collection.find().sort('name', pymongo.ASCENDING).skip(2)
print([result['name'] for result in results])

2.2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py
['Mike', 'Mordan']

3 limit
3.1コード
import pymongo
#     ,  MongoDB IP     ,          host,
#         port(         ,   27017)
client = pymongo.MongoClient(host='localhost', port=27017)
# MongoClient      host       MongoDB      ,  mongodb  
#client = pymongo.MongoClient('mongodb://localhost:27017/')
# client test      test   。
db = client.test
#            
# db = client['test']
#           
collection = db.students

results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(1)
print([result['name'] for result in results])

3.2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py
['Mike']

3.3説明
データベースの数が非常に多い場合、1000万、億などのレベルでは、メモリオーバーフローの原因になる可能性が高いため、大きなオフセットを使用してデータをクエリーしないほうがいいことに注意してください.
四更新
1一般的な方法
1.1コード
import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
condition = {'name': 'Mike'}
student = collection.find_one(condition)
student['age'] = 25
# update()  ,                。
result = collection.update(condition, student)
print(result)

1.2結果
 
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py
{'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}

1.3説明
返される結果は辞書形式であり、okは実行に成功したことを表し、nModifiedは影響するデータの数を表す.
2$set操作
2.1コード
import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
condition = {'name': 'Mike'}
student = collection.find_one(condition)
student['age'] = 26
# # update()  ,                。
# result = collection.update(condition, student)
#      student        。          ,     ,     。
result = collection.update(condition, {'$set': student})
print(result)

2.2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py
{'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}

3 update_one
3.1点眼
update()メソッドも、実は公式では推奨されていないメソッドです.updateをお勧めしますone()メソッドとupdate_many()メソッドは、より厳密に使用され、2番目のパラメータは、辞書のキー名として$タイプオペレータを使用する必要があります.
3.2コード
import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students

condition = {'name': 'Mike'}
student = collection.find_one(condition)
student['age'] = 24
#    update_one()  ,                  ,
#       {'$set': student}     ,      UpdateResult  。
#       matched_count modified_count  ,                   。
result = collection.update_one(condition, {'$set': student})
print(result)
print(result.matched_count, result.modified_count)

3.3説明
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py

1 1

4実戦
4.1コード
import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students

condition = {'age': {'$gt': 20}}
#                    1。
result = collection.update_one(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)

4.2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py

1 1

5 update_many
5.1コード
import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students

condition = {'age': {'$gt': 20}}
#            
result = collection.update_many(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)

5.2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py

5削除
1基本的な使い方
1.1コード
import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
#         ,    remove()           ,                
result = collection.remove({'name': 'Mike'})
print(result)

1.2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py
{'n': 1, 'ok': 1.0}

2 delete_one()とdelete_many()
2.1コード
import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students

# delete_one()             ,delete_many()            。
#          DeleteResult  ,    deleted_count           。
result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)

2.2結果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/5_3_1.py

0
3

六その他の操作
また、PyMongoはfind_one_and_delete()、find_one_and_replace()とfind_one_and_update()は、検索後の削除、置換、更新操作であり、上記の方法とほぼ一致しています.
また、インデックスを操作することもできます.関連する方法はcreate_です.index()、create_indexes()とdrop_index()など.