直接在django中使用pymongo

Jim*_*Lin 1 django mongodb pymongo mongoengine django-mongodb-engine

我正在使用Django和MongoDB构建一个网站.有2个,我们可以用它来连接流行的API框架DjangoMongoDB,一个是mongoengine,另一个是django-mongodb-engine.

因为mongoengine不再支持Django 最新的Document,并且django-mongodb-engine需要另一个django-nonrel使开发环境有点复杂的软件包.

我想知道,如果我可以使用Pymongo连接DjangoMongoDB直接.

有没有人可以分享相同的经验?以及如何setting.py在Django中设置db in 以使db公开?

vin*_*mar 6

你可以使用pyMongo下面的代码

from pymongo import MongoClient


class MongoConnection(object):

    def __init__(self):
        client = MongoClient('localhost', 27017)
        self.db = client['database_name']

    def get_collection(self, name):
        self.collection = self.db[name]
Run Code Online (Sandbox Code Playgroud)

我们根据需要创建连接.

class MyCollection(MongoConnection):

    def __init__(self):
       super(MyCollection, self).__init__()
       self.get_collection('collection_name')

    def update_and_save(self, obj):
       if self.collection.find({'id': obj.id}).count():
           self.collection.update({ "id": obj.id},{'id':123,'name':'test'})
       else:
           self.collection.insert_one({'id':123,'name':'test'})

    def remove(self, obj):
        if self.collection.find({'id': obj.id}).count():
           self.collection.delete_one({ "id": obj.id})
Run Code Online (Sandbox Code Playgroud)

现在你只需要打电话如下.

my_col_obj = MyCollection()
obj = Mymodel.objects.first()
my_col_obj.update_and_save(obj)
my_col_obj.remove(obj)
Run Code Online (Sandbox Code Playgroud)