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

 手机用户2502940165 发布于 2023-01-18 10:05

我需要根据字段"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:如果未指定方向,则key_or_list必须是list的实例

我哪里做错了?

1 个回答
  • 你在几个方面的pymongo调用语法错误了.这应该起作用,假设"collection"是集合的名称.

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

    Pymongo(和Python)需要一个键方向对列表而不是Dict,因为Dicts是无序的.升序索引的语法也是pymongo.ASCENDING.最后,unique和dropDups不需要"$".

    2023-01-18 10:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有