#database #mongodb #mongoose
Вопрос:
У меня есть приложение MERN, у меня есть куча коллекций в моей БД, теперь я хочу сохранить объект, представляющий заказ:
Допустим, у меня есть «пункт 1, пункт 2, пункт 3» в коллекции «предметы», каждый из которых может быть чем угодно на самом деле;
Мне просто нужны идентификаторы (для ссылки на них), я хочу, чтобы пользователь выбрал свой заказ, чтобы я знал правильный способ отображения товаров (не порядок в бд, заказ для отдельной цели). Я думаю, что лучший способ сделать это-иметь один документ с данными о порядке в нем, но каждый документ должен быть в коллекции, поэтому вопрос в том, правильно ли создавать коллекцию только для хранения в ней одного документа? или есть лучший способ?
Это пример документа, который я хочу сохранить: (Индекс массива-это их порядок)
{
items: [{itemId:xxx, otherprops...}, {itemId: yyy, otherprops...}]
}
Коллекция предметов может содержать 100 предметов, поэтому изменение порядка в этой коллекции не является правильным вариантом для моих нужд.
Комментарии:
1. вы хотите хранить данные каждого пользователя, и каждый заказ содержит товары ?
2. @mohammadNaimi Нет, общий порядок для всех пользователей, установленный администратором, в противном случае коллекция была бы моим выбором
Ответ №1:
правильно ли создавать коллекцию только для хранения в ней одного документа
Если вы посмотрите на admin
базу данных в mongodb, вы увидите, что она делает что-то похожее на то, что я думаю, вы пытаетесь сделать. Есть system.version
коллекция. В этой коллекции я видел документы, содержащие информацию, похожую на настройки. Например, свойство featureCompatibility фактически хранится в виде документа с _id: «Совместимость функций». Идентификационные данные фрагментов также хранятся в этой коллекции в виде единого документа:
{
"_id" : "shardIdentity",
"clusterId" : ObjectId("2bba123c6eeedcd192b19024"),
"shardName" : "shard2",
"configsvrConnectionString" : "configDbRepl/alpha.example.net:28100,beta.example.net:28100,charlie.example.net:28100" }
В коллекции system.version есть только один такой документ. Вы очень хорошо можете создать свою собственную коллекцию настроек, в которой вы храните эти сделанные на заказ документы. Это, конечно, не неслыханно.
Взгляните на раздел «С учетом осколков» в официальной документации mongodb, чтобы увидеть этот тип практики в действии:
https://docs.mongodb.com/manual/release-notes/3.6-upgrade-sharded-cluster/#prerequisites