我有一组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++;
}
}
");
答案 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函数的列表。