所以我需要在 MongoDB 中创建一个查找集合来验证唯一性。要求是检查是否重复了相同的 2 个值。在 SQL 中,我会这样
SELECT count(id) WHERE key1 = 'value1' AND key2 = 'value2'
如果上述查询返回一个计数,则表示该组合不是唯一的。我有两种解决方案,但我不确定哪一种更具可扩展性。我需要针对 30M+ 文档创建此映射。
解决方案1:
我在 key1 和 key2 上创建了一个带有复合索引的文档集合
{
_id: <MongoID>,
key1: <value1>,
key2: <value2>
}
解决方案2:
我编写应用程序逻辑以通过连接 value1 和 value2 创建自定义 _id
{
_id: <value1>_<value2>
}
就个人而言,我觉得第二个更优化,因为它只有一个索引,而且 doc 的大小也更小。但我不确定创建自己的 _id 索引是否是一个好习惯,因为它们可能不是完全随机的。你怎么看?
提前致谢。
更新:
我的数据库已经有很多占用内存的索引,所以我想将索引大小保持在尽可能低的水平,特别是对于仅用于验证唯一性的集合。