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中着陆?