Я начал использовать MongoDB, и я довольно новичок в этом. Есть ли способ, с помощью которого я могу применить ограничения на документы в MongoDB? Как указание первичного ключа или принятие атрибута как уникального? Или указать, что конкретный атрибут больше минимального значения?
Как применить ограничения в MongoDB?
Ответ 1
Будучи "схематичной" базой данных, некоторые из упомянутых вами вещей должны быть ограничены со стороны приложения, а не стороной db. (например, "минимальное значение" )
Однако вы можете создавать индексы (ключи для запроса) - помнить, что запрос может использовать только один индекс за раз, поэтому обычно лучше создавать индексы вокруг ваших запросов, а не просто индексировать каждое поле, которое вы можете запросить против): http://www.mongodb.org/display/DOCS/Indexes#Indexes-Basics
И вы также можете создавать уникальные индексы, которые будут обеспечивать уникальность, сходную с уникальным ограничением (у нее есть некоторые оговорки, например, с полями массива): http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue
Ответ 2
Чтобы выйти за пределы ограничений уникальности, доступных изначально в индексах, вам нужно использовать что-то вроде Mongoose и его способность поддерживать полевые validation. Это даст вам поддержку для таких вещей, как минимальное значение, но только когда обновления проходят через ваши схемы/модели Mongoose.
Обновление MongoDB 3.2
Проверка документа теперь поддерживается MongoDB.
Пример из документации:
db.createCollection( "contacts",
{ validator: { $or:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
]
}
} )