Rethinkdb操作案例
以下是Rethinkdb的一些常用的操作案例,基本上足够满足STF的数据库操作
插入数据
r.db(“stf”).table(“apkinfo”).insert({
id: “1”,
name: “中国象棋”,
apkname: “boyaa1”,
version: “1.1.0”,
size: “30M”,
uploadday: “2016-07-26”,
activity: “1”
})
所有数据增加一个字段:
r.db(‘stf’).table(‘tasklist’).update({‘tasktype’:’monkey’})
在数据表对象中插入一行数据
var newdata = {
“product”: “oppo” ,
“result”: “pass”
};
r.db(‘stf’).table(‘tasklist’).get(‘d179c4b3-62ec-4139-92f5-6bb677094bb6’).update({
detail:r.row(‘detail’).default([]).append(newdata)})
//get(‘keyid’)
在数据表中过滤数据:
r.db(‘stf’).table(‘devices’).filter({display:{xdpi:320,ydpi:320}})
替换数据
var rpldata={
reporturl:”stf.oa.com/log/xx.log”
};
r.db(‘stf’).table(‘tasklist’).get(‘taskid’).update(rpldata)
插入数据2
var newdata={
taskid: “20160829”
,useremail: “ff@qq.com”
,apkname:”chinesechessv2.5.0.apk”
,reporturl:””
,detail:[]
};
r.db(‘stf’).table(‘tasklist’).insert(newdata)
增加detail[]数据
var rpldata={
product:”huawei 6p”
,serial:”abcdefghijklmn”
,status:”finish”
,result:”install fail”
,errurl:”stf.oa.com/logurl/serail.log”
,imgurl:”stf.oa.com/imgurl/serail.log”
};
r.db(‘stf’).table(‘tasklist’).get(‘20160829’).update({detail:r.row(“detail”).append(rpldata)})
删除
r.db(‘stf’).table(‘tasklist’).get(‘20160829’).update({detail:r.row(“detail”).delete(第几条)})
替换detail[]里面的数据
var data={
product:”huawei 6p”
,serial:”abcdefghijklmn”
,status:”finish”
,result:”success”
,errurl:”stf.oa.com/logurl/serail.log”
,imgurl:”stf.oa.com/imgurl/serail.log”
};
r.db(‘stf’).table(‘tasklist’).get(‘20160829’).update({detail:r.row(“detail”).changeAt(第几条数据,data)})
var version=[]
var manuf=[]
var width=[]
var dpi=[“480*1080”,””]
数据查询
查询huawei和sumsang的手机并获取其serial
r.db(‘stf’).table(“devices”).filter(
function (doc) {
return r.expr([“HUAWEI”,”SAMSUNG”,”dfdfd”,])
.contains(doc(“manufacturer”));
}
).getField(“serial”)
查询内display里面数据中的width字段
r.db(‘stf’).table(“devices”).filter(
function (doc) {
return r.expr([480,1080])
.contains(doc(“display”)(“width”));
}
)
获取多个数据
db.run(r.table(“devices”).filter(function (doc){
return r.expr(manufacturer).contains(doc(“manufacturer”))
.and(r.expr([version]).contains(doc(“version”)))
.and(r.expr([width]).contains(doc(“display”)(“width”)))
.and(r.expr([height]).contains(doc(“display”)(“height”)))
}).getField(‘serial’))
删除数组中的段数据
数据格式例子:
{
“serial”: [
“abc” ,
“nba” ,
“fifa”
] ,
id: “123456”
}
删除serial数组中的abc
r.db(‘stf’).table(…).get(“123456”).update({serial: r.row(“serial”).difference([“abc”])})
联合查询
r.db(‘stf’).table(‘tasklist’).innerJoin(
r.db(‘stf’).table(‘apkinfo’),
function (tasklist, apkinfo) {
return tasklist(‘fileID’).eq(apkinfo(‘id’));
})
.map({
id: r.row(‘right’)(‘id’),
detail:r.row(‘left’)(‘detail’),
taskid:r.row(‘left’)(‘taskid’),
appName: r.row(‘right’)(‘appName’)
})
.filter(r.row(‘taskid’).eq(taskid))