Python-Mongodbストレージ
9494 ワード
非リレーショナル・データベース:NoSQLはキー値ペアに基づいており、SQLレイヤの解析を必要とせず、パフォーマンスが高い
MongoDBストレージ:C++に基づいて作成され、JSONオブジェクトに似ています.
MongoDBデータベースの接続と基本的な挿入:
同時に複数のデータの挿入:
insert_の使用を推奨one()とinsert_many():
返されるのはinsertResultオブジェクトで、プロパティのメソッドを呼び出して取得できます.id
同様に返されるタイプはinsertManyResultです
クエリーデータ:find_one()またはfind()メソッドはクエリーできます
Objectldに基づいてクエリーできます.
複数の結果の検索:
返される結果はCursorタイプで、ジェネレータに相当し、遍歴に使用できます.
条件を調べる必要があるデータ:
$gtは比較記号で、より大きいことを意味します.
正規表現は一致します.
≪カウント|Count|emdw≫:count()メソッドを呼び出すには、すべてのエントリ数を統計するなど、何個のデータをクエリーする必要がありますか.
統計条件を満たすデータ:
ソート:sort()メソッドを呼び出し、入力ソートフィールドおよび昇降フラグを呼び出すことができます.
昇順はpymongoです.ASCENDING降順はpymongo.DESCENDING
オフセット:いくつかの場所の要素を取得する
結果を取得する個数はlimit()メソッドで指定できます.
注意:データベースの数が非常に膨大な場合.データのクエリーに大きなオフセットを使用しないでください.メモリがオーバーフローする可能性があります.次のクエリを使用できます.
前回のクエリの記録に開始_idが作用する
更新:updata()メソッドによる更新
ここで、nModifiedは影響するデータバーの数を表す
またKaTeX parse error:Expected'}',got'EOF'at end of input:...(condition,{'set':student})
またupdate()メソッドも公式には推奨されていません.推奨update_one()とupdate_manyの方法ですが、使い方はもっと厳しいです.
パラメータは{'$set':student}の形式でmatched_を使用する必要があります.count一致するエントリ数modified_を取得count影響を受けるデータの取得
update_many()メソッドは、条件を満たすすべてのデータを更新します.
削除アクション:delete_one()とdelete_many()
delete_one()条件を満たす最初のデータdeleteを削除するmany()条件を満たすすべてのデータを削除する
拡張:PyMongoにはfind_などの組合せ方法も用意されています.one_and_delete()、find_one_and_replace()、find_one_and_update()は,検索後の削除,置換,更新操作であり,上記の方法とほぼ一致する.また、create_などのインデックスを操作することもできます.index()、create_indexes()、drop_index()など.詳細については、公式ドキュメントを参照してください.http://api.mongodb.com/python/current/api/pymongo/collection.html. また、データベース、コレクション自体、およびその他の操作についても説明しません.公式ドキュメントを参照してください.http://api.mongodb.com/python/current/api/pymongo/.
, Redis, Voldemort, Oracle BDB 。
, Cassandra, HBase, Riak 。
, CouchDB, MongoDB 。
, Neo4J, InfoGrid, Infinite Graph 。
MongoDBストレージ:C++に基づいて作成され、JSONオブジェクトに似ています.
MongoDBデータベースの接続と基本的な挿入:
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
student = {
'id': '17031010225',
'name': 'Zhang',
'age': 21,
'gender': 'male'
}
#
result = collection.insert(student)
# _id
print(result)
同時に複数のデータの挿入:
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
student1 = {
'id': '17031010225',
'name': 'Zhang',
'age': 21,
'gender': 'male'
}
student2 = {
'id': '20170202',
'name': 'Mike',
'age': 21,
'gender': 'male'
}
#
result = collection.insert([student1, student2])
# _id
print(result)
insert_の使用を推奨one()とinsert_many():
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
student = {
'id': '17031010225',
'name': 'Zhang',
'age': 21,
'gender': 'male'
}
#
result = collection.insert_one(student)
# _id
print(result)
print(result.inserted_id)
返されるのはinsertResultオブジェクトで、プロパティのメソッドを呼び出して取得できます.id
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
student1 = {
'id': '17031010225',
'name': 'Zhang',
'age': 21,
'gender': 'male'
}
student2 = {
'id': '20170202',
'name': 'Mike',
'age': 21,
'gender': 'male'
}
#
result = collection.insert_many([student1, student2])
# _id
print(result)
print(result.inserted_ids)
同様に返されるタイプはinsertManyResultです
クエリーデータ:find_one()またはfind()メソッドはクエリーできます
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
result = collection.find_one({'name': 'Mike'})
print(type(result))
print(result)
Objectldに基づいてクエリーできます.
from bson.objectid import ObjectId
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
result = collection.find_one({'_id': ObjectId('5d236b5b530a6140405e7281')})
print(result)
複数の結果の検索:
from bson.objectid import ObjectId
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
results = collection.find({'age': 21})
print(results)
for result in results:
print(result)
返される結果はCursorタイプで、ジェネレータに相当し、遍歴に使用できます.
条件を調べる必要があるデータ:
result = collection.find({'age': {'$gt': 20}})
$gtは比較記号で、より大きいことを意味します.
正規表現は一致します.
results = collection.find({'name': {'$regex': '^M.*'}})
≪カウント|Count|emdw≫:count()メソッドを呼び出すには、すべてのエントリ数を統計するなど、何個のデータをクエリーする必要がありますか.
count = collection.find().count()
print(count)
統計条件を満たすデータ:
count = collection.find({'age': 20}).count()
print(count)
ソート:sort()メソッドを呼び出し、入力ソートフィールドおよび昇降フラグを呼び出すことができます.
from bson.objectid import ObjectId
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
results = collection.find().sort('name', pymongo.ASCENDING)
print([result['name'] for result in results])
昇順はpymongoです.ASCENDING降順はpymongo.DESCENDING
オフセット:いくつかの場所の要素を取得する
from bson.objectid import ObjectId
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
results = collection.find().sort('name', pymongo.ASCENDING).skip(2)
print([result['name'] for result in results])
結果を取得する個数はlimit()メソッドで指定できます.
from bson.objectid import ObjectId
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(3)
print([result['name'] for result in results])
注意:データベースの数が非常に膨大な場合.データのクエリーに大きなオフセットを使用しないでください.メモリがオーバーフローする可能性があります.次のクエリを使用できます.
from bson.objectid import ObjectId
results = collection.find({'id': {'$gt': ObjectId('5d236b5b530a6140405e7280')}})
前回のクエリの記録に開始_idが作用する
更新:updata()メソッドによる更新
from bson.objectid import ObjectId
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
condition = {'name': 'Zhang'}
#
student = collection.find_one(condition)
student['age'] = 99
# update
result = collection.update(condition, student)
print(result)
ここで、nModifiedは影響するデータバーの数を表す
またKaTeX parse error:Expected'}',got'EOF'at end of input:...(condition,{'set':student})
またupdate()メソッドも公式には推奨されていません.推奨update_one()とupdate_manyの方法ですが、使い方はもっと厳しいです.
from bson.objectid import ObjectId
import pymongo
#
# client = MondoClient('mongode://localhost:27017')
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
condition = {'name': 'Zhang'}
#
student = collection.find_one(condition)
student['age'] = 109
# update
result = collection.update_one(condition, {'$set': student})
print(result)
print(result.matched_count, result.modified_count)
パラメータは{'$set':student}の形式でmatched_を使用する必要があります.count一致するエントリ数modified_を取得count影響を受けるデータの取得
import pymongo
#
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
#
condition = {'age': {'$gt': 20}}
#
result = collection.update_one(condition, {'$inc': {'age': 1}})
print(result)
# ,
# print(result.matched_count, result.modified_count)
update_many()メソッドは、条件を満たすすべてのデータを更新します.
import pymongo
#
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
# ,$gt
condition = {'age': {'$gt': 20}}
# ,$inc
result = collection.update_many(condition, {'$inc': {'age': 2}})
print(result)
print(result.matched_count, result.modified_count)
削除アクション:delete_one()とdelete_many()
import pymongo
#
client = pymongo.MongoClient(host='localhost', port=27017)
# School
db = client.School
#
collection = db.students
result = collection.delete_one({'name': 'Mike'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt':25}})
print(result.deleted_count)
delete_one()条件を満たす最初のデータdeleteを削除するmany()条件を満たすすべてのデータを削除する
拡張:PyMongoにはfind_などの組合せ方法も用意されています.one_and_delete()、find_one_and_replace()、find_one_and_update()は,検索後の削除,置換,更新操作であり,上記の方法とほぼ一致する.また、create_などのインデックスを操作することもできます.index()、create_indexes()、drop_index()など.詳細については、公式ドキュメントを参照してください.http://api.mongodb.com/python/current/api/pymongo/collection.html. また、データベース、コレクション自体、およびその他の操作についても説明しません.公式ドキュメントを参照してください.http://api.mongodb.com/python/current/api/pymongo/.