Как применить ограничения в MongoDB?

Я начал использовать MongoDB, и я довольно новичок в этом. Есть ли способ, с помощью которого я могу применить ограничения к документам в MongoDB? Как указать первичный ключ или принять атрибут как уникальный? Или указав, что конкретный атрибут больше минимального значения?

2 ответа

Решение

Будучи базой данных "без схемы", некоторые из упомянутых вами вещей должны быть ограничены на стороне приложения, а не на стороне базы данных. (например, "минимальное значение")

Тем не менее, вы можете создавать индексы (ключи для запроса - помните, что запрос может использовать только один индекс за раз, поэтому обычно лучше создавать индексы вокруг ваших запросов, а не просто индексировать каждое поле, к которому вы можете обращаться): http://www.mongodb.org/display/DOCS/Indexes

И вы также можете создавать уникальные индексы, которые будут обеспечивать уникальность, аналогичную уникальному ограничению (у него есть некоторые предостережения, например, с полями массива): http://www.mongodb.org/display/DOCS/Indexes

Чтобы выйти за пределы ограничения уникальности, доступного изначально в индексах, вам нужно использовать что-то вроде Mongoose и его способность поддерживать валидацию на основе полей. Это даст вам поддержку для таких вещей, как минимальное значение, но только когда обновления проходят через ваши схемы / модели Mongoose.

MongoDB 3.2 Обновление

Проверка документов теперь поддерживается изначально MongoDB.

Пример из документации:

db.createCollection( "contacts",
   { validator: { $or:
      [
         { phone: { $type: "string" } },
         { email: { $regex: /@mongodb\.com$/ } },
         { status: { $in: [ "Unknown", "Incomplete" ] } }
      ]
   }
} )
Другие вопросы по тегам