Rethinkdb RejectDB:如何按字符串字段的长度排序?

Rethinkdb RejectDB:如何按字符串字段的长度排序?,rethinkdb,Rethinkdb,假设我有一个带有标题字段的文章表。我怎样才能得到按标题长度排序的文章列表 例第条: {id: '101', title: 'A title', contents: 'Lots of text'} 我试过: r.table('story').orderBy(function(doc){return r.row('title').length}).pluck('title') 但这是错误的。您现在可以使用split(“”.count()作为解决方法 r.table("story").orderB

假设我有一个带有标题字段的文章表。我怎样才能得到按标题长度排序的文章列表

例第条:

{id: '101', title: 'A title', contents: 'Lots of text'}
我试过:

r.table('story').orderBy(function(doc){return r.row('title').length}).pluck('title')
但这是错误的。

您现在可以使用
split(“”.count()
作为解决方法

r.table("story").orderBy(function(doc) {
    return doc("title").split("").count()
}).pluck("title")

请参阅跟踪本机方法的进度以获取字符串的长度。

这是在DB 2.3中实现的

你可以这样做

r.db('cms')
  .table('story')
  .map(doc => doc.merge({
    title_length: doc('title').default('').count()
  }))
  .orderBy(r.desc('title_length'));
然而,这是非常低效的,因为每次它都会读取所有文档,这比类似的SQL实现效率要低,后者只读取一列,而RejectDB读取整个JSON


如果要经常查询,您可能希望将标题长度保存在文档本身中。

对于包含非ASCII字符(如重音符号或CJK表意文字)的UTF-8字符串,效果不如预期。根据修正,应该在2.1或2.2中着陆?