2014-12-19 2 views
0

У меня есть структура базы данных, в документах которой используется внешний ключ для ссылки друг на друга. Несмотря на то, что 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>.. 
} 
+1

Это редкое для отображения '_id' клиента, верно? Вы всегда можете скрыть '_id', используя запрос« POST ». – Raptor

+0

Erm, и о каждой технологии отображения позволяет перечислить строки таблицы и т. Д. Короче говоря, для ОП: нет автоинкремента. –

+1

@OP: У меня такое ощущение, что то, что вы пытаетесь делать (сознательно или подсознательно), должно использовать MongoDB как СУБД. В MongoDB нет понятия внешнего ключа, нет автоинкремента. Если вы попытаетесь подражать РСУБД с помощью MongoDB, вот что произойдет: в итоге вы получите переопределенную, отстающую систему с раздутой базой кода. Весь процесс разработки отличается от самого начала. В РСУБД вы напоминаете структуру модели домена и пытаетесь ответить на ваши вопросы. В MongoDB вы создаете свои модели в соответствии с вопросами, которые вы хотите получить. –

ответ

0

MongoDB не предназначен для использования как реляционная база данных. Он не поддерживает концепцию внешнего ключа на стороне сервера. В идеале вам необходимо внедрить дочерние документы. Для получения дополнительной информации см этого пост

MongoDB normalization, foreign key and joining

Смежные вопросы