Так что мне нужно создать коллекцию поиска в MongoDB для проверки уникальности. Требование состоит в том, чтобы проверить, повторяются ли те же 2 значения или нет. В SQL я бы что-то вроде этогоПользовательский MongoDB Object _id vs Compound index
SELECT count(id) WHERE key1 = 'value1' AND key2 = 'value2'
Если приведенный выше запрос возвращает счет, значит, комбинация не уникальна. У меня есть 2 решения, но я не уверен, какой из них более масштабируемым. Есть 30M + docs, против которых мне нужно создать это сопоставление.
Solution1:
создать коллекцию документации с индексом соединения на ключом1 и key2
{
_id: <MongoID>,
key1: <value1>,
key2: <value2>
}
Solution2:
Я пишу логику приложения для создания пользовательской _ID конкатенации значение1 и значение2
{
_id: <value1>_<value2>
}
Лично я чувствую, что второй оптимизирован, поскольку он имеет только один индекс, а размер документа также меньше. Но я не уверен, что это хорошая практика для создания моих собственных индексов _id, поскольку они не могут быть полностью случайными. Как вы думаете?
Заранее спасибо.
Update:
Моя база данных уже имеет много индексов, которые занимают память, поэтому я хочу, чтобы сохранить размер индексного как можно специально для коллекций, которые используются только для проверки уникальности.
Вы имели в виду, что счетчик SQL больше 1, значение не уникально? В решении 2 дублирующиеся значения не будут загружены в MongoDB, это будет нормально? – notionquest
Нет, я имел в виду, что подсчет SQL должен быть больше 0. Если его 1 означает, что запись уже существует, поэтому я не должен добавлять дубликат. Для решения 2 это нормально, если mongo не позволяет мне добавлять дубликаты, поскольку это именно то, что я хочу. – umair