STF stf-rethinkdb 数据库一些简单的操作

sandy · 2018年06月22日 · 最后由 阿三 回复于 2020年05月06日 · 3001 次阅读

本篇文档简单介绍一下关于 stf 数据库的一些简单操作(注:本文中的所有代码请在 node 模式下运行)

一、创建表
创建表 dc_universe

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
  r.db('test').tableCreate('dc_universe').run(conn, function(err, res) {
    console.log(res);
  });
});

二、删除表
删除表 dc_universe

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
  r.db('test').tableDrop('dc_universe').run(conn, function(err, res) {
    console.log(res);
  });
  });

三、创建表数据
1.插入一条数据

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn,callback) {
  r.db('test').table("dc_universe").insert(
  {id: 1,title: "Lorem ipsum",content: "Dolor sit amet"}
  ).run(conn, function(err, res) {
    console.log(res);
  });
});

2.插入多条数据

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn,callback) {
  r.db('test').table("dc_universe").insert([
  {id: 1,title: "Lorem ipsum",content: "Dolor sit amet"},
  {id: 2,title: "I love you",content: "I love you too"},
  {id: 3,title: "I miss you",content: "I miss you too"},
  {id: 4,title: "Are you ok",content: "I am ok"},
  {id: 5,title: "How are you",content: "I am fine"},
  {id: 6,title: "what is up",content: "I am working"}
]).run(conn, function(err, res) {
    console.log(res);
  });
});

四、更改表数据
1.如果表中无此字段,会插入这个字段

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
    r.db('test').table("dc_universe").filter({id: 1}).update({status: "published"}).run(conn, function(err, res) {
    console.log(res);
  });
  });

2.如果表中有此字段,直接更新此字段的值

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
    r.db('test').table("dc_universe").filter({id: 1}).update({title: "Lorem ipsum11111111111"}).run(conn, function(err, res) {
    console.log(res);
  });
  });

3.更新所有行数据某列的值

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
    r.db('test').table("dc_universe").update({state: 50}).run(conn, function(err, res) {
    console.log(res);
  });
  });

4.更新指定行的多列的值

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
    r.db('test').table("dc_universe").filter({id: 1}).update({title: "Lorem ipsum333",content:"Dolor sit amet333"}).run(conn, function(err, res) {
    console.log(res);
  });
  });

五、删除表数据
1.删除指定行数据(注:假如只一行的话,那删除成功后,字段内容也被清空了)

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
    r.db('test').table("dc_universe").filter({id: 6}).delete().run(conn, function(err, res) {
    console.log(res);
  });
  }); 

2.清空表所有数据(包括字段内容)

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
    r.db('test').table("dc_universe").delete().run(conn, function(err, res) {
    console.log(res);
  });
  });

六、查询
1.查询所有数据库

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn, callback) {
    r.dbList().run(conn, function(err, res) {
    console.log(res);
  });
  });

2.查询所有的表

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn, callback) {
    r.db('test').tableList().run(conn, function(err, res) {
    console.log(res);
  });
  });

3.查看表的多行数据

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
r.db('test').table('dc_universe').getAll(1,2,3).run(conn, function(err, cursor) {
    cursor.each(function(err, universe) {
        console.log(universe);
        console.log(universe.title);
    });
});
});

4.根据主键查询某一行数据、某列的值
方式一:

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn, callback) {
    r.db('test').table('dc_universe').get(1).run(conn, function(err, res) {
    console.log(res);
    console.log(res.title);
    console.log(res.content);
  });
  });

方式二:使用 getField 关键字

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn, callback) {
    r.db('test').table('dc_universe').get(1).getField('title').run(conn, function(err, res) {
    console.log(res);
  });
  });

5.遍历 stf/users 表的数据

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn) {
r.db('stf').table('users').run(conn, function(err, cursor) {
    cursor.each(function(err, user) {
        console.log(user.name,user.email);
    });
});
});

6.使用 filter 关键字 (filter 相当于 where 条件)

r = require('rethinkdb')
r.connect({ host: 'localhost', port: 28015 }, function(err, conn, callback) {
    r.db('test').table('dc_universe').filter({state: 50,status:'published'}).run(conn, function(err, cursor) {
    cursor.each(function(err, universe) {
        console.log(universe);
    });
  });
  });
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 3 条回复 时间 点赞

楼主问下,你删除表中的一行,id 是主键么? stf 上的表 devices 没看到主键 id

这怎么删除 devices 表中的脏数据呢?
r.db("stf").table("devices").filter({id:17}).delete() 这种的没删除掉,貌似主键不是前面那个行数

蓝蓝 回复

换另外一种方式删除了,r.db("stf").table("devices").filter({'serial':'LE67A06300393854'}).delete()

为什么我第一个就错了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册