Я не совсем уверен, что понимаю настоящий вопрос здесь.Вы спрашиваете второе мнение о вашей схеме?Если так, то вот мое:
Нет ничего плохого в том, чтобы поддерживать отношения между коллекциями, используя идентификаторы документов, как вы сделали.Иногда это правильный (и единственный) путь, даже если вы сами берете на себя ответственность за поддержание отношений / ссылок, поскольку, как вы, вероятно, знаете, mongoDB не поможет вам в этом.
Однако мне немного сложно понять ваши варианты использования, просто взглянув на пример схемы, но то, что бросается в глаза, это рабочий объект.
Я думаю, вам будет лучше использовать массив - возможно, вот так:
works: [
{ "4d772583c186233352000002": 1 },
{ "4d772583c186233352000003": 3 }
]
Таким образом, вы получите лучшую поддержку от mongo в поддержании ваших ссылок, используя, например, $операторы pull и $ push.
Но мне также интересно узнать об использовании ссылки на сторонний идентификатор в качестве ключа в объекте рабочей ссылки.Для более идиоматических объектов, рассмотрите это:
works : [
{ work_id: "4d772583c186233352000002", quantity: 1 },
{ work_id: "4d772583c186233352000003", quantity: 3 }
]
Помогает ли это?