#mongodb
#mongodb
Вопрос:
У меня есть 4 поля в моей MongoDB
базе данных date,source,uid,time
Я хочу создать индекс по дате, но я также хочу убедиться, что никакие две строки не имеют одинакового значения date,source,uid,time
.. один из способов сделать это — это (как я читал в документации)
db.things.ensureIndex({date : 1, source:1, uid:1, time:1}, {unique : true, dropDups : true})
но он использует индекс составных ключей .. мне нужен индекс только по дате, и я также хочу убедиться, что никакие два потока не имеют одинакового значения для даты, источника, uid и времени.
пожалуйста, помогите мне, как это сделать?
Ответ №1:
Для обеспечения уникальности вам нужен индекс по (дата, источник, uid, время), и поскольку date является первым свойством в этом индексе, Mongo может использовать его и для запросов только по дате. Фактически, индекс также может использоваться в запросах, включающих (дата, источник), (дата, источник, uid) и (дата, источник, uid, время).
Другими словами, индекс может использоваться для любого подмножества свойств, встречающихся в индексе, при условии, что они образуют префикс индекса.