Как применить ограничения в 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" ] } }
]
}
} )