gpt4 book ai didi

mongodb - Map Reduce Mongodb Node JS 原生驱动

转载 作者:可可西里 更新时间:2023-11-01 09:47:14 26 4
gpt4 key购买 nike

我正在使用 Map reduce 函数处理 Mongodb native 驱动程序。基本上我有一个 mediaId 作为键,并且想计算每个 mediaId 加载和启动的媒体数量。所以我所做的是:

  var map = function(){
emit(this.media.id, {
count: 1,
played: 0,
ph: this.project.id,
title: this.media.title,
media: this.media.id,
origin: this.origin,
thumbnail: this.media.thumbnail,
mediaDuration: this.media.mediaDuration,
state: this.state
});
};

var reduce = function(k, vals) {
result = {
count: 0,
played: 0,
ph: '',
title: '',
media: '',
origin: '',
thumbnail: '',
mediaDuration: 0,
state: ''
};

vals.forEach(function(doc){
result.count += doc.count;
result.ph = doc.ph;
result.title = doc.title;
result.media = doc.media;
result.thumbnail = doc.thumbnail;
result.mediaDuration = doc.mediaDuration;
result.state = doc.state;
result.origin = doc.origin;
if(doc.state === "started") {
result.played += 1;
}
});
return result;
};

在我的测试集合中,我有 2 个不同的 mediaId。一个有 553 个对象,另一个只有 1 个对象。我已经将所有内容都置于“开始”状态以对此进行测试,因此基本上计数的数量应该等于播放的数量。当我运行 Map/Reduce 函数时,它返回给我(我使用了 mongodb native 驱动程序的“toArray”函数):

[ { _id: '12398asdsa9802193810asd120',
value:
{ count: 1,
played: 0,
ph: '123213ased12231',
title: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
media: '1xxxxxxxxxxxxxxxxxxxxxxxxxxx1',
origin: 'http://www.google.com',
thumbnail: 'http://cache.ohinternet.com/images/0/0e/Forever_Alone.png',
mediaDuration: 12321321,
state: 'started' } },
{ _id: '2c9f94b42f5b5114012f5b92ea430066',
value:
{ count: 553,
played: 155,
ph: '316',
title: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
media: '2xxxxxxxxxxxxxxxxxxxxxxxxxxx2',
origin: 'http://localhost:9000/views/index.html',
thumbnail: null,
mediaDuration: null,
state: 'started' } } ]

似乎我只有一个对象没有调用 reduce 函数(我对另一个包含 100 多个 mediaId 的集合进行了一些测试,行为是相同的。有没有人知道这有什么问题?

非常感谢您的宝贵时间,干杯。

最佳答案

我有点解决了“问题”。我在 Map Function 而不是 Reduce 函数上做了过滤器。像这样:

var map = function(){
if(this.media.state==="started") {
var played = 1;
}else{var played = 0;}
emit(this.media.id, {
count: 1,
played: played,
ph: this.project.id,
title: this.media.title,
media: this.media.id,
origin: this.origin,
thumbnail: this.media.thumbnail,
mediaDuration: this.media.mediaDuration,
state: this.state
});
};

希望对遇到同样“问题”的人有所帮助

关于mongodb - Map Reduce Mongodb Node JS 原生驱动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com