PythonがMongoDBを使用する基本操作

5857 ワード

mongodyは、キー値(key=>value)のペアからなるデータ構造をドキュメントとして格納します.MongoDBドキュメントはJSONオブジェクトに似ています.mongodyのdatabase->collections->document->field->index.リレーショナル・データベースのdatabase->table->rows->column->indexに相当する.
一つのdocument情報
{
	"_id":ObjectId(1234567890),
	"age":16,
	"name":"zixuezhe",
	"email":"[email protected]"
}

1、接続データベース:
from pymongo import MongoClient
class CollectionMongo():
    def __init__(self,host,port):
        self.host = host
        self.port = port
        self.db = None
        self.my_set = None
        self.conn = None
        try:
            self.conn = MongoClient(self.host,self.port)
        except Exception,e:
            print e
    def mySet(self,database,collection):
        self.database = database
        self.collection = collection
        try:
            self.db = self.conn[database]
            self.my_set = self.db[collection]
            return self.my_set
        except Exception,e:
            print e

2、データを挿入する:
if __name__ == "__main__":
    collectionMongo = CollectionMongo('XXX.XXX.XXX.XXX', 27017)
    my_set = collectionMongo.mySet('sun','col')
    my_set.insert({'name':'zhangsan','age':18},{'name':'lisi','age':19})
    for i in my_set.find():
        print i

3、クエリーデータ
dbを使用します.database.collecction.find()はコレクション内のすべてのデータを調べることができます
if __name__ == "__main__":
    collectionMongo = CollectionMongo('XXX.XXX.XXX.XXX', 27017)
    my_set = collectionMongo.mySet('sun','col')
    for i in my_set.find():
        print i

4、条件照会
find(「name」:「zhangsan」)を使用して、zhangsanのすべての名前のbsonデータを調べることができます.sql select*fromに相当
database where name='zhangsan'
    for i in my_set.find({"name":"zhangsan"}):
        print i

find_の使用one(「name」:「zhangsan」)は、最初の一致するデータを返します.
5、データの更新
my_set.update({"name":"zhangsan"},{'$set':{"name":"lisi"}})
    for i in my_set.find():
         print i

「name」:「zhangsan」を「lisiに変更」します.この方法では、最初の「name」が「zhangsan」のデータのみを「lisi」に変更します.
my_set.update({"name":"zhangsan"},{'$set':{"name":"lisi"}},upsert=True,multi=True)
    for i in my_set.find():
         print i

upsertの役割を使用しているデータベースがデータに一致していない場合は、このデータが挿入されます(デフォルトはfalse)、multiはバッチ操作、デフォルトはfalseです.彼の役割はすべての一致情報を更新します.
6、データの削除
name=lisiのすべてのレコードを削除
my_set.remove({'name':'lisi'})

name=lisiのidに基づいて、対応するデータを削除
id = my_set.find_one({'name':'lisi'})['_id']
my_set.remove(id)

7、monggodb中の条件オペレータ
成績が合格した学生を調べる:
for i in my_set.find('grade':{"$gte":60})
	print i

タイプ判定により、名前がStringタイプのデータを探し出す:
for i in my_set.find('name':{'$type':2})

ここで2はStringタイプ:部分対照
Double    			1     
String    			2     
Object    			3     
Array    			4     
Binary data    		5     
Undefined    		6       
Object id    		7     
Boolean    			8     
Date    			9     
Null    			10    

ソートsort().そのうち1は昇順、-1は降順を表す
for i in my_set.find().sort([("age",1)]):
    print(i)

Limitとskip
#limit()             
#skip()             
#             6 
for i in my_set.find().skip(2).limit(6):
    print(i)

IN
#  age 20、30、35   
for i in my_set.find({"age":{"$in":(20,30,35)}}):
    print(i)

OR
#  age 20 35   
for i in my_set.find({"$or":[{"age":20},{"age":35}]}):
    print(i)

all
'''
dic = {"name":"lisi","age":18,"li":[1,2,3]}
dic2 = {"name":"zhangsan","age":18,"li":[1,2,3,4,5,6]}

my_set.insert(dic)
my_set.insert(dic2)
'''
for i in my_set.find({'li':{'$all':[1,2,3,4]}}):
    print(i)

allとinの違い、allは指定されたすべての条件が存在しなければならないことを示し、inはある指定された条件が存在することを示す.
push/pushAll
my_set.update({'name':"lisi"}, {'$push':{'li':4}})
for i in my_set.find({'name':"lisi"}):
    print(i)
#  :{'li': [1, 2, 3, 4], '_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'age': 18, 'name': 'lisi'}

my_set.update({'name':"lisi"}, {'$pushAll':{'li':[4,5]}})
for i in my_set.find({'name':"lisi"}):
    print(i)
#  :{'li': [1, 2, 3, 4, 4, 5], 'name': 'lisi', 'age': 18, '_id': ObjectId('58c50d784fc9d44ad8f2e803')}

pop/pull/pullAll
#pop
#        (-1      )
my_set.update({'name':"lisi"}, {'$pop':{'li':1}})
for i in my_set.find({'name':"lisi"}):
    print(i)
#  :{'_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'age': 18, 'name': 'lisi', 'li': [1, 2, 3, 4, 5]}

#pull (    )
#  3
my_set.update({'name':"lisi"}, {'$pop':{'li':3}})

#pullAll (         )
my_set.update({'name':"lisi"}, {'$pullAll':{'li':[1,2,3]}})
for i in my_set.find({'name':"lisi"}):
    print(i)
#  :{'name': 'lisi', '_id': ObjectId('58c50d784fc9d44ad8f2e803'), 'li': [4, 5], 'age': 18}

MongoDBのより多くの操作は、ゆっくり勉強する必要があります.