1***@qq.com
1***@qq.com
  • 发布:2023-06-22 21:04
  • 更新:2023-06-28 17:42
  • 阅读:305

jql如何查询数组字段中包含给定数组的所有元素,类似传统查询数据的运算符中的all

分类:uniCloud

下面是官方例子,传统操作数据库:
找出 tags 数组字段同时包含 cloud 和 database 的记录

const dbCmd = db.command  
let res = await db.collection('todos').where({  
  tags: dbCmd.all(['cloud', 'database'])  
})  
.get()

如何用jql语法,用字符串方式条件查询,实现上面的同时包含的查法?
jql用字符串方式条件查询:

const db = uniCloud.database()  

// 使用`jql`查询list表内`name`字段值为`hello-uni-app`的记录  
db.collection('list')  
  .where('name == "hello-uni-app"')  
  .get()

如何用类似上面的jql语法用字符串查询,来实现找出tags 数组字段同时包1和2
例如:数据库存在以下记录

{  
  "_id": "1",  
  "tags": [1,2,3,4]  
}  
{  
  "_id": "2",  
   "tags": [2,3,6,7]  
}  
{  
  "_id": "3",  
  "tags": [2,3,4,5,8,9]  
}

如何使用jql查询语法,以字符串条件方式,查询出同时含有数组[3,6]中内容的tags
这个[3,6]数组是一个变量条件arr,arr=[3,6],返回

{  
  "_id": "2",  
   "tags": [2,3,6,7]  
}

arr=[1,3],返回

{  
  "_id": "1",  
   "tags": [1,2,3]  
}

arr=[2,3,4],返回

{  
  "_id": "1",  
  "tags": [1,2,3,4]  
}  
{  
  "_id": "3",  
   "tags": [2,3,4,5,8,9]  
}

传统方式是: tags: dbCmd.all(arr)

jql查询语法,以字符串条件方式,如何写?

2023-06-22 21:04 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

有官方可以解答的吗?

DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

.where("tags=='cloud' && tags=='database'")

  • 1***@qq.com (作者)

    你好,查询固定数组数据可以这么写,如果查询非固定的数组,如查询数组arr里面的值是否完全在"tags": [2,3,4,5,8,9]中,如果arr=[2,3,4],就返回结果,因为2,3,4完全在tags中,如果arr=[2,3,7],就查询不到数据,因为虽然2,3在tags中,但7不在tags中,不是完全在tags中,所以查询不到,用传统方式是: tags: dbCmd.all(arr)可以实现,但是用jql字符串方式中,好像没有实现这个方法

    2023-06-25 15:10

1***@qq.com

1***@qq.com (作者)

看来这个问题是要无解了!!!

要回复问题请先登录注册