如何在pymongo中创建包含两个字段的索引,使其在一起唯一?

我有这个密码:

self.db[self.mongo_collection].create_index("url", unique=True)

但我需要在urlcategory上独一无二.

推荐答案

您需要创建一个复合索引,并将unique设置为True,如documentation中所述:

如果对复合索引使用唯一约束,那么MongoDB将对值的组合而不是键的任何或所有值的单个值强制唯一性.

self.db[self.mongo_collection].create_index(
    [("url", pymongo.DESCENDING), ("category", pymongo.ASCENDING)],
    unique=True
)

Mongodb相关问答推荐

在出现错误时忽略mongodb事务回滚是好做法吗

从MongoDB中的嵌套数组中提取找到的值及其索引

Spring数据MongoDB(聚合)

如何在 MongoDB 中的集合下查找同一文档

如何匹配 MongoDB 中同一文档中两个字段的比较?

分组前的 MongoDb 聚合总数

在 MongoDB 中使用 findOneAndUpdate 有条件地更新/更新嵌入式数组

使用 mongodb 时是否需要规范化数据库?

MongoDB 列表 - 获取每第 N 个元素

Mongodb 仅在值唯一时插入,否则更新 - 在 node.js 中

声明多个模式后无法从数据库中获取数据(mongoose + express + mongodb

Mongoose 与 mongodb 如何返回刚刚保存的对象?

MongoDB Java API:put() 与 append()

Mongoose / MongoDB 用户通知方案建议

一起使用 MongoDB 和 Neo4j

MongoDB MapReduce - 发出一个键/一个值不调用reduce

如何在 Ubuntu 上安装 mongodb-clients 最新版本?

我可以只获取 Cursor 对象(pymongo)中的第一项吗?

与 mongoose/node.js 共享数据库连接参数的最佳方式

带有条件的MongoDB聚合查找