标签: rethinkdb

如何从RethinkDB文档中删除密钥?

我正在尝试从RethinkDB文档中删除密钥.我的方法(没有用):

r.db('db').table('user').replace(function(row){delete row["key"]; return row}) 
Run Code Online (Sandbox Code Playgroud)

其他方法:

r.db('db').table('user').update({key: null}) 
Run Code Online (Sandbox Code Playgroud)

这个只设置row.key = null(看起来合理).

通过Web UI 在rethinkdb数据资源管理器上测试的示例.

rethinkdb rethinkdb-python

41
推荐指数
3
解决办法
1万
查看次数

比较MongoDB和RethinkDB批量插入性能

这是我在这里的官方第一个问题; 我欢迎任何/所有批评我的帖子,以便我可以学习如何成为一个更好的SO公民.

我正在审查非关系型DBMS,用于存储潜在的大型电子邮件退出列表,使用各自的Python客户端库,倾向于使用MongoDB或RethinkDB.我的应用程序的痛点是批量插入性能,因此我设置了两个Python脚本,将批量为5,000的20,000条记录插入到MongoDB和RethinkDB集合中.

MongoDB python脚本mongo_insert_test.py:

NUM_LINES = 20000
BATCH_SIZE = 5000

def insert_records():
    collection = mongo.recips
    i = 0
    batch_counter = 0
    batch = []
    while i <= NUM_LINES:
        i += 1
        recip = {
            'address': "test%d@test%d.com" % (i, i)
        }
        if batch_counter <= BATCH_SIZE:
            batch.append(recip)
            batch_counter += 1
        if (batch_counter == BATCH_SIZE) or i == NUM_LINES:
            collection.insert(batch)
            batch_counter = 0
            batch = []

if __name__ == '__main__':
    insert_records()
Run Code Online (Sandbox Code Playgroud)

几乎相同的RethinkDB python脚本rethink_insert_test.py:

NUM_LINES = 20000
BATCH_SIZE = 5000

def insert_records():
    i …
Run Code Online (Sandbox Code Playgroud)

python mongodb nosql python-2.7 rethinkdb

25
推荐指数
2
解决办法
1万
查看次数

在RethinkDB中,检查数据库或表是否存在的最简单方法是什么?

我知道我可以做的一种方式是通过列出通过dbList()tableList()再想找我想要的结果.

有没有更简单的方法?

编辑

我的目标是创建一个表,以防它不存在.

rethinkdb

23
推荐指数
2
解决办法
9447
查看次数

跨多个服务器复制sqlite数据库的方法

我正在开发一个分布式的应用程序,我有一个必须在分布式服务器之间共享的SQLite数据库.如果我在serverA中,并且更改sqlite行,则此更改必须立即在其他服务器中,但如果服务器处于脱机状态,然后它在线,则必须更新所有信息等于其他服务器.

我正在尝试使用小型SQLite数据库开发HA服务.

我正在考虑像MongoDB或ReThinkDB这样的东西,因为复制工作正常,我有独立的服务器在线数据.

有一个库或其他SQL方法在服务器之间共享数据?

提前致谢.

sqlite replication high-availability distributed-computing rethinkdb

22
推荐指数
3
解决办法
3万
查看次数

如何在rethinkdb中将元素追加到数组中

我有这个对象:

{
    "id": "eb533cd0-fef1-48bf-9fb8-b66261c9171b" ,
    "errors": [
        "error1" ,
        "error2"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我只想在错误数组中添加一个新错误.我试过了:

r.db('test').table('taskQueue').get("eb533cd0-fef1-48bf-9fb8-b66261c9171b").update({'errors': r.row['errors'].append('appended error')})
Run Code Online (Sandbox Code Playgroud)

但这没用.它给出了这个错误:"TypeError:r.row.errors未定义"

我的问题是如何追加数组?

rethinkdb rethinkdb-python

18
推荐指数
1
解决办法
4728
查看次数

如何在Phoenixframework中使用RethinkDB?

刚到Elixir/Phoenix我想使用RethinkDB而不是PostgreSQL,但我只在PostgreSQL上找到文档/示例(它似乎是默认/官方数据库).Hamiltop(Rethinkdb-elixir)提供了一个非常好的软件包,但遗憾的是Wiki中的文档还没有准备就绪,而自述文件对我来说还不够.我绝对不想使用SQL(我来自使用Meteor/MongoDB,其中数据库不是问题).谁能告诉我一个我需要的代码的简单示例:

  1. 连接到RethinkDB;
  2. 启动服务器/管理服务器/连接;
  3. 创建数据库/表;
  4. 执行基本的CRUD操作.

这可能听起来很傻但是Meteor为我们照顾这些,现在这对我来说是一个问题...因为我无法正确地做到这一点.谢谢!

elixir rethinkdb ecto phoenix-framework

18
推荐指数
1
解决办法
1812
查看次数

如何在RethinkDB中创建唯一项

如何在RethinkDB中创建唯一项?

在MongoDb中我使用ensureIndex了这个,例如:

userCollection.ensureIndex({email:1},{unique:true},function(err, indexName){
Run Code Online (Sandbox Code Playgroud)

rethinkdb

17
推荐指数
1
解决办法
4571
查看次数

socket.io vs RethinkDB changefeed

目前我正在使用没有RethinkDB的socket.io,如下所示:

客户端向socket.io发出事件,socket.io接收事件,发送到各种其他客户端,并保存到数据库以保持持久性.新的客户端连接将从db获取现有数据,然后通过socket.io监听新事件.

如何切换到RethinkDB和更改源在这里帮助我?

我看到同样使用RethinkDB的方式是客户端可以执行POST(插入RethinkDB)而不是发送到socket.io,然后socket.io正在观看RethinkDB更改并在接收到新数据时向所有客户端发送.

这种方法如何比我当前的方法更好地使用RethinkDB和changefeed?对我来说,他们都觉得他们完成了同样的事情,但是我没有看到RethinkDB方法有任何明显的优势,因为我要去db而不是直接从服务器上的socket.io发出它会肯定会慢一点.

socket.io rethinkdb

17
推荐指数
1
解决办法
3970
查看次数

RethinkDB - 更新嵌套数组

我有一个调查表,看起来像这样:

{
  id: Id,
  date: Date,
  clients: [{
    client_id: Id,
    contacts: [{
      contact_id: Id,
      score: Number,
      feedback: String,
      email: String
    }]
  }]
}
Run Code Online (Sandbox Code Playgroud)

我需要更新特定联系人下的字段scorefeedback字段.目前,我正在运行这样的更新:

function saveScore(obj){
  var dfd = q.defer();
  var survey = surveys.get(obj.survey_id);

  survey 
    .pluck({ clients: 'contacts' })
    .run()
    .then(results => {

      results.clients.forEach((item, outerIndex) => {
        item.contacts.forEach((item, index, array) => {
          if(Number(item.contact_id) === Number(obj.contact_id)) {
            array[index].score = obj.score;
            console.log(outerIndex, index);
          }
        });
      });

      return survey.update(results).run()
    })
    .then(results => dfd.resolve(results))
    .catch(err => dfd.resolve(err));

  return dfd.promise;
}; …
Run Code Online (Sandbox Code Playgroud)

javascript database node.js rethinkdb

16
推荐指数
2
解决办法
4468
查看次数

非ACID RethinkDB或MongoDB如何为不相等的查询维护二级索引

这更像是"内部运作"未定问题:

noSQL数据库如何不支持*A*CID(意味着它们无法在单个事务中更新/插入然后回滚多个对象的数据) - 更新二级索引?

我的理解是 - 为了使二级索引保持同步(否则它将变得陈旧) - 这必须在同一事务中发生.

此外,如果索引可能驻留在与数据不同的主机上 - 那么需要存在分布式锁和/或两阶段提交以使这种更新原子地工作.

但是,如果这些数据库不支持多对象事务(这意味着它们不对多个主机上的数据进行两阶段提交),它们使用什么方法来保证驻留在B树结构中的二级索引与数据不陈旧?

indexing transactions acid mongodb rethinkdb

13
推荐指数
2
解决办法
3255
查看次数