2

So I need to create a lookup collection in MongoDB to verify uniqueness. The requirement is to check if the same 2 values are being repeated or not. In SQL, I would something like this

SELECT count(id) WHERE key1 = 'value1' AND key2 = 'value2'

If the above query returns a count then it means the combination is not unique. I have 2 solutions in mind but I am not sure which one is more scalable. There are 30M+ docs against which I need to create this mapping.

Solution1:

I create a collection of docs with compound index on key1 and key2

{
  _id: <MongoID>,
  key1: <value1>,
  key2: <value2>
}

Solution2:

I write application logic to create custom _id by concatenating value1 and value2

{
  _id: <value1>_<value2>
}

Personally, I feel the second one is more optimised as it only has a single index and the size of doc is also smaller. But I am not sure if it is a good practice to create my own _id indexes as they may not be completely random. What do you think?

Thanks in advance.

Update:

My database already has a lot of indexes which take up memory so I want to keep index size to as low as possible specially for collections which are only used to verify uniqueness.

4

2 に答える 2