当前位置: 首页 > 知识库问答 >
问题:

我可以在MongoDB中创建一个唯一的复合索引来强制键排列的唯一性吗?

闾丘高峰
2023-03-14

假设我有一个记录品牌之间相关性值的集合(别管如何生成或解释这种相关性。)那么这个集合中的字段将包括:'Brand1'、'Brand2'和'correlation'。

为了举例起见,假设品牌可以承担“Google”、“Microsoft”等字符串值,这样每个文档就记录了各种品牌名称之间的相关性。

我想在'Brand1'和'Brand2'字段上创建一个唯一的索引,以便每个文档在集合中只记录一对品牌之间的相关性一次。为了做到这一点,在集合中确定唯一性时,必须考虑索引中键的排序。['google','microsoft']的键应视为与['microsoft','google']的键相同,因此,如果使用前一个键的文档已经存在,则将禁止插入使用后一个键的文档。

这种指标可能吗?

共有1个答案

向锦
2023-03-14

没有办法对MongoDB集合强制执行这种约束。

然而,您所能做的是在软件中强制执行一个约束,即索引的两个组件始终按排序顺序存储。(例如,始终存储[“a”,“b”],而不存储[“b”,“a”]。)这使得集合中的任何对都只有一个“规范”版本。

 类似资料:
  • 问题内容: 不知道在PostgreSQL 9.3+中是否可行,但是我想在非唯一列上创建唯一索引。对于像这样的表: 我想仅能[快速]查询不同的日子。我知道我可以用来帮助执行不同的搜索,但是如果不同值的数量大大少于索引覆盖的行数,这似乎会增加额外的开销。就我而言,大约30天中有1天与众不同。 我是创建关系表以仅跟踪唯一条目的唯一选择吗?思维: 并在每次插入数据时使用触发器来更新它。 问题答案: 索引只

  • CreateIndexes 根据struct中的tag来创建索引 CreateUniques 根据struct中的tag来创建唯一索引

  • 问题内容: 我认为外键意味着单行必须引用单行,但是我正在查看某些表,但事实并非如此。表1在表2的列2上有一个具有外键约束的列1,但是在表2中有很多记录在列2中具有相同的值。在column2上也有非唯一索引。这是什么意思?外键约束是否仅表示至少一条记录必须存在,且在正确的列中具有正确的值?我认为这意味着必须有一个这样的记录(不确定空值是否适合图片,但目前我对此不太担心)。 更新:显然,此行为特定于M

  • 这是我的限制: 该查询证明约束实际上不起作用: 下面是输出: 为什么唯一性没有被强制执行?

  • 我构建了一个REST服务,发现使用Gson从ObjectId生成的JSON字符串的格式与Spring-Boot生成的格式不同。如果我以GSON格式将现有文档的_id字段的ObjectId发送到REST服务,并使用MongoRepository的save函数将其保存到集合中,即使在这样的字段上设置了唯一的索引,仍会插入具有duplicated_id的新文档。但是,如果我以spring-boot生成的

  • 我想在PostgreSQL中设置一个表,这样两列在一起必须是唯一的。任何一个值都可以有多个值,只要没有两个值同时共享。 例如: 因此,和可以重复,但不能同时重复。因此,这是允许的(不包括id) 但不是这个: