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

在mongo数据库中按一定条件创建唯一索引

许博
2023-03-14

我是MongoDB的新手。在研究主题“在MongoDB中施加唯一约束”时,我遇到了将unique字段设置为true的createindex的概念。这确保了在其上创建索引的某个字段在整个DB中变得唯一。

我有一个学生集合,它有三个字段:student_id、name、age.我希望student_id在我的数据库中是唯一的。现在,对于字段'name'=“xyz”的值,我可以允许许多student_id不需要唯一的记录。对于'name'的所有其他值,student_id必须是唯一的。

例如:如果初始学生收集的内容是:

[
  { "student_id": 1 
    "name": "A",
    "age": 1.0
  },
  { 
    "student_id": 2 
    "name": "B",
    "age": 2.0
  }
]

现在,如果我想插入录音

{ 
  "student_id": 2 
  "name": "C",
  "age": 105.0
}

它应该告诉我student_id:2已经存在(或者重复条目)。但如果我要插入记录:

{ 
  "student_id": 2 
  "name": "XYZ",
  "age": 105.0
}

任何建议都将是非常值得赞赏的。多谢了。

共有1个答案

胥康安
2023-03-14

您可以在两个键上创建唯一索引,在您的例子中,可以在name和student_id上创建唯一索引。这会解决你的案子。查看链接获取更多帮助:https://docs.mongodb.com/manual/core/index-unique/

 类似资料:
  • 我试图在我们的COSMOSDB上的一些集合上创建一个唯一的索引。每个MS文档https://docs.microsoft.com/en-us/azure/cosmos-db/mongoDB-indexing:只有当集合为空(不包含任何文档)时,才能创建唯一索引。 因此,我清理了集合上的所有数据,但遇到错误时,消息是: 你知道为什么我会出错吗? 谢谢,

  • 其中mDatabase是对Firebase数据库的引用,而num是用于检索随机问题的随机值。我已经为4个选项重复了上述代码a 4次,但当我有2个选项时,如上面提到的和数据库结构中所示,我的应用程序停止工作。 我们将非常感谢所有的帮助。

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

  • 我遇到一个情况,需要根据另一个列值对一个列[属性]强制执行唯一约束。 例如,我有一个像table(ID,EID,Name,ISDeleted)这样的表 ISDeleted只能有一个值null或'y'(active或deleted),并且我想在EID上创建一个唯一的约束,仅当ISDeleted=null时才创建ISDeleted,因为我不关心是否有多个具有相同ID的已删除记录。请注意,EID可以为空

  • 问题内容: 我将Elasticsearch用作文档数据库,并且我创建的每个记录都有一个GUID ID,系统将其用作记录ID。商界人士希望提供一种功能,使用户可以基于日期和迄今为止在这一天/每月创建的记录数来拥有自己的自动文件名约定。 我需要防止重复的用户文件名。有没有一种方法可以将索引字段设置为唯一?像sql唯一约束一样? 问题答案: 您需要使用应该唯一的字段作为文档的ID。默认情况下,具有现有I

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