0

我有一组 Twitter 数据,我使用 MongoDB 和 MongoDB PHP 驱动程序按天分组。对于每个分组,我想根据子字段数据计算两个计数。其中一个计数将基于简单地匹配一个字符串(我已经弄清楚了)。另一个需要检查数组是否包含特定字符串。是否有代码进行第二次测试?

这是我对 group() 参数的了解:

$initial = array(
  "count" => 0,
  "mentions" => 0
);

$reduce = new MongoCode(
  "
  function (doc, prev) { 
    if (doc.interaction.interaction.author.id == $twitter_id) {
      prev.count++; 
    }

    //Note, only returns true if first value in array is matched. How to return true if array contains value?
    if (doc.interaction.twitter.mention_ids == $twitter_id) {
       prev.mentions++;
    }
  }

");
4

1 回答 1

0
if (doc.interaction.twitter.mention_ids == $twitter_id) {
   prev.mentions++;
}

假设mention_ids在这个例子中是一个数组,我无法想象true如果“数组中的第一个值匹配”,这个条件是如何返回的。您正在将数组与字符串值进行比较(我假设就是这样$twitter_id)。

要在 JavaScript 中搜索mention_ids数组,您可以遍历它并比较值(最好break在第一次匹配后退出迭代),或者使用Array.indexOf()方法。根据经验,MDN 的 JavaScript门户是一个很好的参考。

除了核心 JavaScript API 之外,您还可以在mapReduce 命令文档的 map/reduce 函数中找到其他 JavaScript 函数列表。

于 2013-08-20T15:24:41.393 回答