从指定数据库的集合中删除记录

时间:2019-02-07 07:22:12

标签: django pymongo mongoengine

我正在使用mongoDB作为数据库,正在从事django项目,并使用mongoengine与数据库连接。我的问题是,如果我在settings.py中的默认数据库是DB1,并且我要删除 DB2中存在的集合的所有记录,那我该怎么做

settings.py

import mongoengine

mongoengine.connect(
    db= "DB1",
    host='localhost',
)

models.py

class Resources(Document):
    field1= fields.StringField(max_length=20)
    field2 = fields.StringField(max_length=70)
    field3 = fields.StringField(max_length=70)
    field4 = fields.DictField()

    meta = {'collection': 'resources', 'allow_inheritance': False, '_target_db': 'DB2'}

python shell

from .models import Resources
import mongoengine
mongoengine.connect('DB2', alias='ces')
ob = Resources()
ob.switch_db('ces')
ob.field1 = value
ob.field2 = value
ob.field3 = value
ob.save()

现在我在resources中有集合DB2,并且有一些记录,我已经尝试过Resources.objects.all().delete() ,但是它不是从DB2删除记录,而是删除来自DB1(默认数据库)的记录。

1 个答案:

答案 0 :(得分:0)

如果每个模型都绑定到1个(并且只有1个)数据库,则可以使用连接aliasmeta = {'db_alias': 'your_connectio_alias'}docs)来实现所需的目标

有关示例,请参见此post