所以我需要在MongoDB中创建一个查找集合来验证唯一性。要求是检查是否重复相同的2个值。在SQL,我想这样的事情自定义MongoDB对象_id vs化合物索引
SELECT count(id) WHERE key1 = 'value1' AND key2 = 'value2'
如果上面的查询返回的计数那么就意味着该组合不是唯一的。我有两个解决方案,但我不确定哪一个更具可扩展性。有30M +文档需要我创建这个映射。
解决方法1:
我创建KEY1和KEY2与化合物索引文档的集合
{
_id: <MongoID>,
key1: <value1>,
key2: <value2>
}
溶液2:
我写应用程序逻辑以通过串联创建自定义_id value1和value2
{
_id: <value1>_<value2>
}
个人而言,我觉得第二个更优化,因为它只有一个索引,doc的大小也更小。但我不确定创建我自己的_id索引是否是一种好的做法,因为它们可能不是完全随机的。你怎么看?
在此先感谢。
更新:
我的数据库已经拥有了很多,所以我想保持索引大小,以尽可能低专为它们仅用于验证的独特收藏,其占用内存索引。
你的意思是SQL计数大于1,这个值不是唯一的吗?在解决方案2中,重复的值不会被加载到MongoDB中,这会很好吗? – notionquest
不,我的意思是SQL计数大于0.如果它的1意味着条目已经存在,所以我不应该添加重复。对于解决方案2,如果mongo不允许我添加重复项,那是正确的。 – umair