我知道这里有很多内容,但是,我对MongoDB很新,并且正在努力应用我已经找到的答案。
简而言之,我有两个集合'total_by_country_and_isrc',它是MapReduce函数和'asset_report'的输出,它包含'total_by_country_and_isrc'集合中不存在的asset_id或者是MapReduced的原始数据集合。
'total_by_country_and_isrc'中的数据示例为:
{“_ id”:{“custom_id”:4748532,“isrc”:“GBCEJ0100080”, “country”:“AE”},“value”:0}
'asset_report'中的数据示例是:
{“_ id”:ObjectId(“51824ef016f3edbb14ef5eae”),“资产ID”: “A836656134476364”,“资产类型”:“网络”,“元数据来源”: “未知”,“自定义ID”:“4748532”,“ISRC”:“”,}
我想以下结果('total_by_country_and_isrc_with_asset_id'):
{“_ id”:{“资产ID”:“A836656134476364”,“custom_id”:4748532, “isrc”:“GBCEJ0100080”,“country”:“AE”},“value”:0}
我知道如何在关系数据库中使用,但我真的想尝试在Mongo中使用它,因为我正在处理一些非常大的集合,并认为Mongo是适合这项工作的工具。
有人可以在这里提供一些指导吗?
答案 0 :(得分:0)
我认为你想使用“减少”输出动作:Output to a Collection with an Action。您需要重新生成total_by_country_and_isrc,因为它看起来不像asset_report具有生成total_by_country_and_isrc中已有密钥所需的字段 - 因此“加入”数据是不可能的。
首先,编写一个map方法,该方法能够从原始集合(用于生成total_by_country_and_isrc)以及asset_report集合生成相同的键。将这些键视为“加入”字段。
接下来,映射并缩小原始集合,使用正确的密钥创建total_by_country_and_isrc。
最后,使用与生成total_by_country_and_isrc相同的方法映射asset_report,但使用reduce函数可用于减少asset_report中此映射数据与total_by_country_and_isrc中数据的交集(按键)。