uniapp连接mysql数据库_uniapp云数据库问题
博客表包含了一个cate_id,贴上blogvote表
我看文档,关联表用lookup。但是没法加条件,如果用addFields,又不知道怎么继承当前查询的blog_id,还有一个就是查询数量的,好像也只能用addFields
·回复
·回复
db_init.json
{
"blog": {
"data": [{
"_id": "blog-1",
"content": "11111111"
},
{
"_id": "blog-2",
"content": "22222222"
},
{
"_id": "blog-3",
"content": "33333333"
}
]
},
"zan": {
"data": [
{
"_id": "zan-1",
"blogId": "blog-1",
"userId": "user-1"
},
{
"_id": "zan-2",
"blogId": "blog-2",
"userId": "user-2"
},
{
"_id": "zan-3",
"blogId": "blog-1",
"userId": "user-2"
}
]
},
"user": {
"data": [
{
"_id": "user-1",
"name": "user-name-1"
},
{
"_id": "user-2",
"name": "user-name-2"
}
]
}
}
云函数代码
use strict;
const db = uniCloud.database()
exports.main = async () => {
let userId = user-1
const $ = db.command.aggregate
let res = await db.collection(blog).aggregate().lookup({
localField: _id,
foreignField: blogId,
from: zan,
as: zanList
}).addFields({
zanCount: $.size($zanList),
zaned: $.anyElementTrue([$.map({
input: $zanList,
as: zanItem,
in: $.eq([$$zanItem.userId, userId])
})])
}).project({
zanList: 0
}).end()
return res
};
博客表包含了一个cate_id,贴上blogvote表 我看文档,关联表用lookup。但是没法加条件,如果用addFields,又不知道怎么继承当前查询的blog_id,还有一个就是查询数量的,好像也只能用addFields ·回复 ·回复 db_init.json { "blog": { "data": [{ "_id": "blog-1", "content": "11111111" }, { "_id": "blog-2", "content": "22222222" }, { "_id": "blog-3", "content": "33333333" } ] }, "zan": { "data": [ { "_id": "zan-1", "blogId": "blog-1", "userId": "user-1" }, { "_id": "zan-2", "blogId": "blog-2", "userId": "user-2" }, { "_id": "zan-3", "blogId": "blog-1", "userId": "user-2" } ] }, "user": { "data": [ { "_id": "user-1", "name": "user-name-1" }, { "_id": "user-2", "name": "user-name-2" } ] } } 云函数代码 use strict; const db = uniCloud.database() exports.main = async () => { let userId = user-1 const $ = db.command.aggregate let res = await db.collection(blog).aggregate().lookup({ localField: _id, foreignField: blogId, from: zan, as: zanList }).addFields({ zanCount: $.size($zanList), zaned: $.anyElementTrue([$.map({ input: $zanList, as: zanItem, in: $.eq([$$zanItem.userId, userId]) })]) }).project({ zanList: 0 }).end() return res };