原味小伙
原味小伙
  • 发布:2020-08-30 14:20
  • 更新:2020-09-01 19:18
  • 阅读:810

cloud云数据聚合多表联lookup查再加模糊搜索match

分类:uniCloud

请问各位大佬,这个lookup 我使用了以后,拿到了多表数据。如下数据

[{
"_id": "b5416b755f4a0ca200b05bb27a92fd2f",
"k_time": 1598688418457,
"merchants_id": "4a46c0515f3365ed007bb1dc4a288770",
"str": 1,
"txt": "发送广告稍等",
"userInfo": {},
"ms_list": [{
"_id": "4a46c0515f3365ed007bb1dc4a288770",
"mer_name": "德国餐厅",
"user_id": "b1cb7d3a5f3365ed0075047f2dc0d0cf",
"account": "1234",
"admin_name": "谁呀"
}]

.然后我要模糊搜索

ms_list[0].mer_name 这个字段。。。我的老天爷,,,

我的写法:如下
var res = await collectiona.aggregate()
.lookup({
from: event.dbn,
localField: where.name,
foreignField: where.key,
as: where.list_name,
})
.match({"ms_list[0].mer_name":{$regex:"德国"}})
.end()
这样根本就是不行的。。。。拿不到数据,调试了一下,问题再与 match 里的 键。。
"ms_list[0].mer_name"<<< 不能这样写。。,只能写 单字段名字。。。

请问各位大佬有没有搞出来的。。。搞了半天,头疼。。也测试了官方 lookup的 将 ms_list 字段数据 直接 给整个 数据集 。。更是不管用。。。官方 教程 写法 如下:

let res = await db.collection('orders').aggregate()
.lookup({
from: "books",
localField: "book",
foreignField: "title",
as: "bookList"
})
.replaceRoot({
newRoot: $.mergeObjects([ $.arrayElemAt(['$bookList', 0]), '$$ROOT' ])
})
.project({
bookList: 0
})
.end()

================

newRoot: $.mergeObjects([ $.arrayElemAt(['$bookList', 0]), '$$ROOT' ]) <<<< 这个 我写成自己的字段, $.arrayElemAt(['$ms_List', 0]) <<< 居然是 报错 。。第一个 $ < 不能写。。。我的老天爷。。。。。

求解。。。。。。。。。。。。。。。。。

2020-08-30 14:20 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

看一下unwind

该问题目前已经被锁定, 无法添加新回复