Принудительное создание нового _id во встроенных документах MongoDB - PullRequest
2 голосов
/ 06 декабря 2011

Я работаю с ASP.NET MVC 3, C # и MongoDB.У меня есть модель со встроенными документами, но я хотел бы автоматически сгенерировать новый _id для каждого из моих встроенных документов.

Я могу сделать это в коде и установить

Model._id = ObjectId.GenerateNewId();

Но я был бы рад, если бы мне не пришлось беспокоиться об этом и позволить MongoDB автоматически сгенерировать новый _id длякаждый встроенный документ.

Я не хочу нормализовать эти встроенные документы в новую коллекцию, здесь есть смысл, но я бы хотел иметь уникальный идентификатор для них.

1 Ответ

2 голосов
/ 06 декабря 2011

Единственное ObjectId, которое MongoDB "автоматически генерирует" - это то, которое оно использует для первичного ключа: _id.

Когда вы сохраняете документ, MongoDB практически ничего не знает о "схеме" или«встроенные» документы или «массивы поддокументов».Здесь нет проверки типов или проверки схемы, поэтому нет способа принудительно создать экземпляр встроенных идентификаторов.

Лучше всего заключить его в родительский класс.Если к этим встроенным документам привязан определенный класс, вы можете поместить GenerateNewId() в этот конструктор.

...