pythonはMongoDBに接続し、削除・変更操作を行う


#!/usr/bin/env python
# coding=utf-8

import pymongo
from pymongo import MongoClient
from pymongo.errors import DuplicateKeyError
# 1.   MongoClient
#   ,     ,                   
#          
class Mongo(object):

    #    ,       
    # port:      ,          
    def __init__(self, host='127.0.0.1', port=47017):
        self.client = MongoClient(host, port)

    #     
    def insert(self, database, collection, document):
        """
        :param database:         
        :param collection:      
        :param document:         
        :return:
        """
        # 1.      
        _database = self.client.get_database(database)
        # 2.           
        _collection = _database.get_collection(collection)
        #          
        result = _collection.insert_one(document)
        #      ,          ?     ?        
        # print(type(result))  # 
        # print(dir(result))
        # print(result)  # 
        # print(result.inserted_id)  #           id
        # print(result.acknowledged)  #          ,  True,  :False

    def insert(self, database, collection, document):
        try:
            _database = self.client.get_database(database)
            _collection = _database.get_collection(collection)
            #    document     ,       ,    insert_one()
            # isinstance: python    ,           ,     
            if isinstance(document, dict):
                result = _collection.insert_one(document)
                #            result.acknowledged
                return result.acknowledged
            elif isinstance(document, list):
                result = _collection.insert_many(document)
                return result.acknowledged
            else:
                return False
        except DuplicateKeyError:
            return False

    # def search(self, database, collection, filter):
    #     """
    #     :param database:      
    #     :param collection:  
    #     :param filter:         ,          
    #     :return:
    #     """
    #     #   :      
    #     #     
    #     #             
    #     _database = self.client.get_database(database)
    #     _collection = _database.get_collection(collection)
    #     #           
    #     results = list(_collection.find(filter))
    #     print(type(results))  # 
    #     print(dir(results))
    #     print(results)
    #     #      return
    #     return results

    def search(self, database, collection, filter):
        """
        :param database:      
        :param collection:  
        :param filter:         ,          
        :return:
        """
        #   :      
        #     
        #             
        _database = self.client.get_database(database)
        _collection = _database.get_collection(collection)
        #           
        results = list(_collection.find(filter))
        # print(type(results))  # 
        # print(dir(results))
        print(results)
        #      return
        return results

    def delete(self, database, collection, filter):
        # filter:      
        _database = self.client.get_database(database)
        _collection = _database.get_collection(collection)
        result = _collection.delete_many(filter)
        # print(result.acknowledged)
        return result.acknowledged

    def update(self, database, collection, filter, document_to):
        _database = self.client.get_database(database)
        _collection = _database.get_collection(collection)
        # filiter:      
        # update:     :         。  update       filter     
        #      :      ,      ,        :{"$set":      }
        result = _collection.update_many(filter, {"$set": document_to}, upsert=True)
    def __del__(self):
        self.client.close()


if __name__ == '__main__':
    mongo = Mongo()
    for i in range(1,40):
        data = {'_id': i,"name": '  ',"age": 25}
        #          id ,        ,      id ,         ObjectId("5bb9bc6aa236ce29f4898035")
        #     
        # 'trade_center':     ,     ,mongoDB          
        # 'users': ,     ,MongoDB        
        # data:      trade_center    users     
        mongo.insert('mydb', 'mongod2', data)

    #       ,          
    #       , and   
    # filter = {"name": "  " } #  :     ,    int    ,   “”,         ,  ,  /       
    # mongo.search('mydb', 'mongod', filter)

    # #      ,      ,     
    # filter = {"name": "  "  }
    # mongo.delete('mydb', 'mongod', filter)

    #filter:  
    # filter = {"name": "  "}
    #  #       
    # document_to = {"name": "  ","age": 10}
    # mongo.update('mydb', 'mongod', filter, document_to)