Удалить записи из коллекции указанной БД - PullRequest
0 голосов
/ 07 февраля 2019

Я использую 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

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 голосов
/ 04 июня 2019

Если каждая ваша модель привязана к 1 (и только 1) базе данных, вы можете достичь желаемого, используя соединение alias и meta = {'db_alias': 'your_connectio_alias'} ( docs )

См.этот пост для примера

...