首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >导入Mongodb到CSV -去重

导入Mongodb到CSV -去重
EN

Stack Overflow用户
提问于 2013-01-11 02:15:50
回答 1查看 889关注 0票数 2

我正在将数据从Mongo导入到CSV文件中。导入由每个JSON文档的“时间戳”和“文本”组成。

文档:

代码语言:javascript
运行
复制
{ 
name: ..., 
size: ..., 
timestamp: ISODate("2013-01-09T21:04:12Z"), 
data: { text:..., place:...},
other: ...
}

代码:

代码语言:javascript
运行
复制
with open(output, 'w') as fp:
   for r in db.hello.find(fields=['text', 'timestamp']):
       print >>fp, '"%s","%s"' % (r['text'], r['timestamp'].strftime('%H:%M:%S'))

我想删除重复的(一些Mongo文档有相同的文本),我想保持第一个实例(关于时间)完好无损。是否可以在导入时删除这些重复项?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2013-01-11 02:26:05

我将使用一个集合来存储数据的散列,并检查重复项。如下所示:

代码语言:javascript
运行
复制
import md5

hashes = set()
with open(output, 'w') as fp:
   for r in db.hello.find(fields=['text', 'timestamp']):
       digest = md5.new(r['text']).digest()
       if digest in hashes:
            # It's a duplicate!
            continue
       else:
            hashes.add(digest)
       print >>fp, '"%s","%s"' % (r['text'], r['timestamp'].strftime('%H:%M:%S'))

值得注意的是,您可以直接使用文本字段,但对于较大的文本字段,仅存储散列的内存效率要高得多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14264575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档