使用单个MONGODB组查询的多个计数

时间:2013-08-02 17:07:04

标签: php mongodb

我有一组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++;
    }
  }

");

1 个答案:

答案 0 :(得分:0)

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

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

要在JavaScript中搜索mention_ids数组,您可以迭代它并比较值(理想情况下break - 在第一次匹配后的迭代中),或者使用{{3} } 方法。根据经验,Array.indexOf()门户网站是一个很好的参考。

除了核心JavaScript API之外,您还可以在MDN's JavaScript中的map / reduce函数中找到其他JavaScript函数的列表。