#!/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)