【发布时间】:2016-03-08 20:14:20
【问题描述】:
首先,我是 mongo 的新手,所以我不太了解,由于某些依赖关系,我不能只删除重复的行。
我在 mongo 中存储了以下数据
{'id': 1, 'key': 'qscderftgbvqscderftgbvqscderftgbvqscderftgbvqscderftgbv', 'name': 'some name', 'country': 'US'},
{'id': 2, 'key': 'qscderftgbvqscderftgbvqscderftgbvqscderftgbvqscderftgbv', 'name': 'some name', 'country': 'US'},
{'id': 3, 'key': 'pehnvosjijipehnvosjijipehnvosjijipehnvosjijipehnvosjiji', 'name': 'some name', 'country': 'IN'},
{'id': 4, 'key': 'pfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnew', 'name': 'some name', 'country': 'IN'},
{'id': 5, 'key': 'pfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnew', 'name': 'some name', 'country': 'IN'}
你可以看到一些行是重复的,具有不同的 id 只要需要从输入中解决这个问题,我就必须在输出中解决它。
我需要以下方式的数据:
{'id': 1, 'key': 'qscderftgbvqscderftgbvqscderftgbvqscderftgbvqscderftgbv', 'name': 'some name', 'country': 'US'},
{'id': 3, 'key': 'pehnvosjijipehnvosjijipehnvosjijipehnvosjijipehnvosjiji', 'name': 'some name', 'country': 'IN'},
{'id': 4, 'key': 'pfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnewpfvvjwovnew', 'name': 'some name', 'country': 'IN'}
我的查询
keys = db.collection.distinct('key', {})
all_data = db.collection.find({'key': {$in: keys}})
如您所见,同一结果集需要两次查询请合并为一个,因为数据库非常大
我还可以在key 上创建一个unique key,但该值太长(152 个字符),对我没有帮助。
还是会??
【问题讨论】:
-
也许不是“完全”在“删除”部分,但肯定是在识别部分。基本上你需要在公共字段上
$group,然后返回任何其他辅助字段$first