python - 实现 ensureIndex() 以使用 pymongo 删除重复文档

标签 python mongodb pymongo

我需要删除基于字段“X”的唯一值的重复条目。它在 mongodb shell 中工作正常:

db.collection.ensureIndex({x' : 1},{unique: true, dropDups: true})

我想使用 pymongo 运行它,我使用的代码如下:

import pymongo
import mmh3

conn = pymongo.MongoClient()
db = conn['scrapy-mongodb']

db.collection.ensure_index({'x' : 1}, {'$unique' : True, '$dropDups' : True})

这段代码抛出:

TypeError: if no direction is specified, key_or_list must be an instance of list

我哪里出错了?

最佳答案

您在几个方面的 pymongo 调用语法错误。假设“collection”是集合的名称,这应该可以工作。

db.collection.ensure_index([("x" , pymongo.ASCENDING), ("unique" , True), ("dropDups" , True)])

Pymongo(和 Python)需要一个键方向对列表而不是字典,因为字典是无序的。升序索引的语法也是 pymongo.ASCENDING。 unique 和 dropDups 终于不需要“$”了。

关于python - 实现 ensureIndex() 以使用 pymongo 删除重复文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403190/

相关文章:

Python fastavro 错误地转换 float

python - 美国人口普查 API - 使用 Python 获取一个州内每个城市的人口

python - 无法对对象 : pymongo. 光标进行编码。光标对象位于

python - PyMongo 中的 MapReduce

python - 使用 pymongo 在 mongodb 上插入 $currentDate

python - 确定字典中是否存在键

Python:如何获取使用 MySQLdb 删除的行数

php - 通过 Composer 学说mongodb安装错误

java - Spring Data 的 MongoTemplate 和 MongoRepository 有什么区别?

node.js - Mongoose 填充 - 数组