要转换为整数的事件类型,并插入到rethinkdb

时间:2015-04-28 20:29:18

标签: jquery aggregation rethinkdb

这是我的每一个事件的消息。我如何只收集一个类型数据(字符串)并给它一个值1,同时插入rethinkdb作为值1,并更新它的总值 样本数据----仅采取"事件":"点击"作为整数值1并作为1插入数据库,并且还像total_click

一样更新总值
{
 "message_ver": "2011-03-17",
 "data":{
   "chan":"chan-552a4",        
   "device":"mob", 
     "event":"click", 
     "type":"ad",   
     "ip":"95.195.139.177",
     "user_agent":"Mozilla/5.0 [FB_IAB/FB4A;FBAV/31.0.0.20.13;]", 
     "content_version":"ver-5534bb69cbeb1",
     "referrer":"http://vlt.com",
    "r_type":"ad"
  }
} 

1 个答案:

答案 0 :(得分:0)

似乎您想要的是您希望每个文档/行代表不同类型的事件。如果数据库中不存在该事件类型并添加计数为1的total_event属性,那么您想要的是将新文档插入到数据库中。如果该事件类型已存在,您可能需要增加该文件的总数。

在这种情况下,文档将具有以下结构:

{
  event: 'click'
  total_event: 1
}

因此,您可以使用branch命令查看是否存在具有该事件名称的文档,并根据结果insertupdate文档:

r.expr({ "data":{ "event":"click" }})
  .do(function (_row) {
    return r.branch(
      // Check if there is a row with an `event` property equal to our data.event
      r.table('29929310').filter({ 
        event: _row('data')('event') 
      }).count().gt(0),
      // If there is, add 1 to the `total` property
      r.table('29929310').update(function (_row1) { 
        return { total: _row1('total').add(1) };
      }),
      // If there isn't, insert a new document with a total of `1`
      r.table('29929310').insert({ 
        event: _row('data')('event'),
        total: 1
      })
    )
  })