mongodb打印全表某个字段的子类型,使用js的Set方法去重

使用场景,我的某个表里有一百万条数据。在表里有个property字段,这个字段是对象属性。当然了,属性下面存在很多子类型。

目前的任务是,我就想要这些子类型,而且是不重复的,表中的数据有180万以上。如果我使用了distinct方法,结果会报错为超出内存阀值

我使用的方法是Set去重,然后再打印出来。代码如下

var find = db['mycollection'].find({});

var figure_set = new Set();

find.forEach(function(event) {
	for(var item in event.property) {
		figure_set.add(item);
	}
})

figure_set.forEach(function (element, set) {  
    print(element);  
});

遍历set集合

var figure_set = new Set();
for(var item of figure_set) {
	console.log(item);
}

遍历json对象

json示例如下

var categoryJson = {
    "交通/火车班次":"data.traffic",
    "人物/企业家":"data.figure",
    "人物/体育明星":"data.figure"
}

for循环遍历

for(var item in categoryJson) {
    //item是key, categoryJson[item]是value
    print(item + "	" + categoryJson[item]);
}

 

注意:在自己使用过程中,需要把表名和字段替换成自己的相应的。

代码在自己的机器上测试过了,可能还是会存在错误和想给我建议的,email: chenrui@marsdl.com

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值