这是我的每一个事件的消息。我如何只收集一个类型数据(字符串)并给它一个值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"
}
}
答案 0 :(得分:0)
似乎您想要的是您希望每个文档/行代表不同类型的事件。如果数据库中不存在该事件类型并添加计数为1的total_event
属性,那么您想要的是将新文档插入到数据库中。如果该事件类型已存在,您可能需要增加该文件的总数。
在这种情况下,文档将具有以下结构:
{
event: 'click'
total_event: 1
}
因此,您可以使用branch
命令查看是否存在具有该事件名称的文档,并根据结果insert
或update
文档:
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
})
)
})