У меня есть структура базы данных, в документах которой используется внешний ключ для ссылки друг на друга. Несмотря на то, что MongoDB не очень хорошо справляется с запросом JOIN, мы можем получить документы, запустив отдельные запросы на основе внешнего ключа.MongoDB правильный способ автоматического приращения
Я могу использовать ObjectID (_id
) MongoDB, который является уникальным. Но это слишком долго, и отображение этого длинного идентификатора на стороне клиента для запросов данных выглядит немного уродливым. Я думал о создании пользовательских автоинкрементные в MongoDB, который позволит решить эту проблему, но MongoDB документация говорит:
Вообще в MongoDB, вы бы не использовать шаблон автоинкрементируемого для поля _ID, или любое поле, потому что он не масштабируется для баз данных с большим количеством документов.
Так что самое лучшее решение для моих ниже структур данных
Collection: Products
{
Project_ID: 1001, <Auto Incrementing>
Product: "Example Product",
..<Few other fields>..
}
Collection: Payments
{
Project_ID: 1001, <Foreign key>
Pay_ID: 2001, <Auto Incrementing>
..<Few other fields>..
}
Collection: Others
{
Project_ID: 1001, <Foreign key>
Pay_ID: 2001, <Foreign key>
Other_ID: 3001, <Auto Incrementing>
..<Few other fields>..
}
Это редкое для отображения '_id' клиента, верно? Вы всегда можете скрыть '_id', используя запрос« POST ». – Raptor
Erm, и о каждой технологии отображения позволяет перечислить строки таблицы и т. Д. Короче говоря, для ОП: нет автоинкремента. –
@OP: У меня такое ощущение, что то, что вы пытаетесь делать (сознательно или подсознательно), должно использовать MongoDB как СУБД. В MongoDB нет понятия внешнего ключа, нет автоинкремента. Если вы попытаетесь подражать РСУБД с помощью MongoDB, вот что произойдет: в итоге вы получите переопределенную, отстающую систему с раздутой базой кода. Весь процесс разработки отличается от самого начала. В РСУБД вы напоминаете структуру модели домена и пытаетесь ответить на ваши вопросы. В MongoDB вы создаете свои модели в соответствии с вопросами, которые вы хотите получить. –