Вопросы

Документ наследования ODM с ошибкой создания схемы типа SINGLE_COLLECTION

У меня есть документ наследования с типом SINGLE_COLLECTION, настроенным в моем приложении Symfony 4.4. Когда я запускаю команду bin/console doctrine:mongodb:schema:create, возникает ошибка a collection 'db.Person' already exists.

Все было сделано по документации: https://www.doctrine-project.org/projects/doctrine-mongodb-odm/en/2.0/reference/inheritance-mapping.html#single-collection-inheritance

src / Document / Person.php

<?php

namespace App\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/**
 * @MongoDB\Document
 * @MongoDB\InheritanceType("SINGLE_COLLECTION")
 * @MongoDB\DiscriminatorField("type")
 * @MongoDB\DiscriminatorMap({"person"=Person::class, "employee"=Employee::class})
 */
class Person
{
    /**
     * @var integer|null
     *
     * @MongoDB\Id
     */
    protected $id;

    /**
     * @var string|null
     *
     * @MongoDB\Field(type="string")
     */
    protected $name;
}

src / Document / Employee.php

<?php

namespace App\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/**
 * @MongoDB\Document
 */
class Employee extends Person
{

    /**
     * @var string|null
     *
     * @MongoDB\Field(type="string")
     */
    protected $grade;
}

Похоже, что команда пытается создать коллекцию БД для каждого класса Document, игнорируя объявление типа SINGLE_COLLECTION.

Как это исправить?

Коллекции в MongoDB не нужно создавать явно. Что такое неудачная операция?   —  person Mateusz K.    schedule 05.05.2020

Я знаю, что это не нужно, но я предпочитаю создавать полную схему БД для индексов. Расширенный ответ об ошибке: MongoDB\Driver\Exception\CommandException: a collection 'db.Person' already exists in vendor/mongodb/mongodb/src/Operation/CreateCollection.php:222   —  person Mateusz K.    schedule 05.05.2020

Читать:
Как найти максимальную сумму подмассива, если мне нужно удалить самый большой элемент в подмассиве

Что такое полная трассировка стека?   —  person Mateusz K.    schedule 05.05.2020

Олег, у меня не получается stacktrace. Когда я запустил bin/console doctrine:mongodb:schema:create -vvv, я получил ответ: a collection 'db.Person' already exists Created indexes for all classes   —  person Mateusz K.    schedule 06.05.2020

Похожие записи

Каков размер некоторых двунаправленных слоев LSTM?

admin

Что такое действительный указатель в gcc linux x86-64 C ++?

admin

Python3: установка в virtualenv не выполняется

admin

Как я могу удалить или опустить данные с помощью метода карты для объектов tf.data.Dataset?

admin

Изменить цвет фона ScrollView SwiftUI

admin

Что значит загружаемый в микроконтроллерах в смысле линикеров

admin