我有一个大约1.1M文档的集合。集合中有相当多的重复,我最终将通过mapreduce消除。无论其...
以下是冗余数据的示例:
{
"_id": ObjectId("4ec6d3ac61910ad451f1eb7a"),
"bii": 10.8105,
"class": 2706,
"decdeg": -48.8432,
"lii": 286.488,
"name": "HD 97312",
"radeg": 167.8669,
"vmag": 8.2,
"xref": ["HD 97312"]
}
{
"_id": ObjectId("4ec6d44c61910ad451f8b255"),
"bii": 10.802,
"class": 2900,
"decdeg": -48.8517,
"decpm": -0.008,
"lii": 286.4896,
"name": "PPM 316146",
"radeg": 167.8644,
"rapm": -0.0003,
"vmag": 8.2,
"xref": ["CPD -48 3792", "-48 6250", "HD 97312", "PPM 316146", "SAO 222629"]
}
{
"_id": ObjectId("4ec6d48c61910ad451ff1ead"),
"bii": 10.802,
"class": 2700,
"decdeg": -48.8517,
"decpm": -0.013,
"hd_component": 0,
"lii": 286.4897,
"name": "SAO 222629",
"radeg": 167.8647,
"rapm": -0.0006,
"vmag": 8.3,
"xref": ["CP-48 3792", "HD 97312", "SAO 222629"]
}
由于外部参照数组包含所有交叉引用,因此我需要将这些数组合并为一个数组,并删除重复项。
任何人都可以提出一种“简单”的方法来做这个,所以我不必编写某种递归的js函数吗?
答案 0 :(得分:1)
我不是100%清楚你需要什么。我在这里看到两种可能性。
如果您正在进行Map / Reduce,那么您只需要在“减少”时确保重复。应该像M / R中的几个for
循环一样简单。
如果您是从头开始构建这些数据,那么您应该查看$addToSet
更新功能,它将为您提供所需的内容。