草庐IT

mongodb - Map Reduce Mongodb Node JS 原生驱动

coder 2023-10-31 原文

我正在使用 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/

有关mongodb - Map Reduce Mongodb Node JS 原生驱动的更多相关文章

  1. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  2. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  3. 【云原生】SpringCloud-Spring Boot Starter使用测试 - 2

    目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一

  4. ruby - 运行测试时静音 Chrome 驱动程序控制台输出 - 2

    我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_

  5. node.js - 从未编写过任何自动化测试,我应该如何开始行为驱动开发? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。多年来,我一直在使用多种语言进行编程,并且认为自己总体上相当擅长。但是,我从未编写过任何自动化测试:没有单元测试,没有TDD,没有BDD,什么都没有。我已经尝试开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中所有代码的理论值(value)。我可以看到像RSpec和Mocha这样的测试框架应该如何使设置和运行所述测试变得相当容易

  6. ruby-on-rails - 在 Rails/Capybara/Poltergeist 规范中使用 url_for 将驱动程序发送到 example.com 而不是应用程序 - 2

    如果我在功能规范中调用url_for,它会返回一个以http://www.example.com/开头的绝对URL.Capybara会很乐意尝试加载该站点上的页面,但这与我的应用程序无关。以下是重现该问题的最少步骤:从这个Gemfile开始:source'https://rubygems.org'gem"sqlite3"gem"jquery-rails"gem"draper"gem"rails",'4.1.0'gem"therubyracer"gem"uglifier"gem"rspec-rails"gem"capybara"gem"poltergeist"gem"launchy"运行

  7. 驱动开发:内核无痕隐藏自身分析 - 2

    在笔者前面有一篇文章《驱动开发:断链隐藏驱动程序自身》通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分析一下他是如何实现的进程隐藏的,总体来说作者的思路是最终寻找到MiProcessLoaderEntry的入口地址,该函数的作用是将驱动信息加入链表和移除链表,运用这个函数即可动态处理驱动的添加和移除问题。MiProcessLoaderEntry(pDriverObject->DriverSection,1)添加MiProcessLoaderEntry(pDriverObject->DriverSection,

  8. ruby - 事件/观察者驱动的 Ruby on Rails - 2

    我有一个适用于事件/监听器模型的应用程序。发布了几种不同类型的数据(事件),然后许多不同的事情可能需要也可能不需要对该数据(监听器)采取行动。监听器的发生没有特定的顺序,每个监听器将决定是否需要对事件采取行动。Rails应用程序有哪些工具可以完成此任务?我希望自己不必这样做(尽管我可以。这没什么大不了的。)编辑:观察者模式可能是更好的选择 最佳答案 查看EventMachine.它是一个非常流行的Ruby事件处理库。它看起来相当不错,而且很多其他库似乎都在利用它(Cramp)。这是一个很好的介绍:http://rubylearnin

  9. ruby - 如何让 Ruby 找到原生库? - 2

    我在/usr/local/lib中安装了一些本地库。我现在正在尝试安装一个需要这些的gem,以便正确构建,但是gem构建失败,因为它找不到图书馆。gem的extconf.rb文件试图确认它可以找到库have_library()但由于某种原因失败了。我尝试设置一堆环境变量,但似乎没有任何效果:irb(main):003:0>require'mkmf'=>trueirb(main):004:0>have_library('gecodesearch')checkingformain()in-lgecodesearch...no=>falseirb(main):005:0>ENV['LD_LI

  10. AT24C04、AT24C08、AT24C16系列EEPROM芯片单片机读写驱动程序 - 2

    一、概述在之前的一篇博文中,记录了AT24C01、AT24C02芯片的读写驱动,先将之前的相关文章include一下:1.IIC驱动:4位数码管显示模块TM1637芯片C语言驱动程序2.AT24C01/AT24C02读写:AT24C01/AT24C02系列EEPROM芯片单片机读写驱动程序本文记录分享AT24C04、AT24C08、AT24C16芯片的单片机C语言读写驱动程序。二、芯片对比介绍型号容量bit容量byte页数字节/页器件寻址位可寻址器件数WordAddress位数/字节数备注AT24C044k5123216A2A149/1WordAddress使用P0位AT24C088k1024

随机推荐