下面是官方例子,传统操作数据库:
找出 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]
}
3 个回复
1***@qq.com (作者)
有官方可以解答的吗?
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 (作者)
看来这个问题是要无解了!!!