我在Mongo DB中收藏了很多。
问题:假设我有 300万条记录作为列表检索,我必须使用一些标准在列表中对每个对象进行相互比较。 什么是解决问题的最有效方法?
有没有办法直接从数据库获取这些记录,或者在获取数据后在python中执行比较。
例如数据:
学生:[ {ID:001,名称: '约翰',rollNo: '666', '年龄:25', '业余爱好': '国际象棋,唱歌,打网球'},{ID:002,名称: '娶',rollNo:” 555' , '年龄:15', '爱好': '国际象棋,网球', '唱歌'},{ID:003,名称: '埃里克',rollNo: '444', '年龄:20', '业余爱好' : '足球,网球', '舞'}, < - 重复 {ID:003,名称: '鲍勃',rollNo: '444', '年龄:20', '业余爱好': '足球,网球', '舞'}, < - 重复 {ID:004,名称: '爱丽丝',rollNo: '666', '年龄:25', '爱好': '网球', '溜冰鞋', '舞蹈'}]
需要生成一些分析: 所有重复,都有类似的爱好等。
提前致谢:)
答案 0 :(得分:0)
Mongo聚合框架或一些python脚本
from collections import defaultdict
name = defaultdict(list)
for student in students:
name[student['name']] = student['id']
答案 1 :(得分:0)
我认为最好的方法是使用mongo aggregation framework,例如,重复年龄:
db.<collection>.aggregate([
// group by age
{$group: { _id: { age: '$age'}, names: {$push: '$name'}, count: {$sum: 1} }},
// get all where count > 1
{$match: {count: {$gt: 1}}}
])