Couchbase Lite中的IN运算符

时间:2019-07-31 07:54:01

标签: couchbase-lite n1ql

我需要查询

SELECT * FROM `sample` WHERE id IN ["123", "456"]

以下将其转换为QueryBuilder

QueryBuilder
   .select(SelectResult.all())
   .from(DataSource.database("sample"))
   .where(Expression.property("id")
          .in([
                Expression.string("123"), 
                Expression.string("456")
              ])
         )

这不起作用,返回空结果列表,知道吗?

1 个答案:

答案 0 :(得分:1)

我从您的评论中看到您的代码有效(错误否定)。但是,我将分享一种在您需要对多个通配符(like)表达式使用%运算符的情况下可能有用的方法。样本使用科特林语言:

val list = listOf("123", "456")
val items = list.map { Meta.id.like(Expression.string("$it-%")) }.toMutableList()
val whereExpression = items
        .fold(items.removeAt(0)) { chain, next -> chain.or(next) }
val query = QueryBuilder.select(
        SelectResult.expression(Meta.id),
        SelectResult.all()
    ).from(DataSource.database(this.db)).where(whereExpression)
val results = query.execute()
val resultList = results.allResults()