请问如何实现将 user 集合下 记录_id为 okopenidopenidopenid 字段为 save1
中对应的值,全都转换为"真实数据" 并返给客户端?
除了for,lookup还有什么别的方法吗?
//user集合 ,每个记录都是一个用户的数据
//每个save中都只记录了物品对应的id
{
{
//_id是用户openid
_id: "okopenidopenidopenid",
//保存位置1
save1:{
// sword集合下 _id为 8503f3385f114dea0014d2f972ae175a 的帕米尔弯刀
sword: "8503f3385f114dea0014d2f972ae175a",
// shield集合下 _id为 6dddb6b55f0d92d300325ac31f1c135e 的一个小圆盾
shield: "6dddb6b55f0d92d300325ac31f1c135e"
// 衣服
// 裤子
// 鞋子
// 戒指
// 耳环..以此类推
},
//保存位置2
save2:{
// sword集合下 _id为 7503f3385f115b2600154e3c7258252a 的火烈之剑
sword: "7503f3385f115b2600154e3c7258252a",
// shield集合下 _id为 6dddb6b55f0d92d300325ac31f1c135e 的一个小圆盾
shield: "6dddb6b55f0d92d300325ac31f1c135e"
// 衣服
// 裤子
// 鞋子
// 戒指
// 耳环..以此类推
}
}
//sword集合 存放所有剑
{
_id: "8503f3385f114dea0014d2f972ae175a",
name: "帕米尔弯刀",
.....一堆属性
},
{
_id: "7503f3385f115b2600154e3c7258252a",
name: "火烈之剑",
.....一堆属性
}
//其他物品集合和 sword集合结构相同
可达鸭表示脑壳疼
---------------------------------------------------------------------------------------
解决方法
为了减少请求次数,和加载时间,大佬们都说可以将 sword 改成 对象!!!
于是在保存前,将原来的关联模式,改成了对象!!!
就可以解决我的问题!
{
//_id是用户openid
_id : "okopenidopenidopenid",
//保存位置1 新方案!
save1: {
// sword集合下 _id为 8503f3385f114dea0014d2f972ae175a 的帕米尔弯刀的数据
sword: {
_id: "8503f3385f114dea0014d2f972ae175a",
name: "帕米尔弯刀",
.....一堆属性
},
// shield集合下 _id为 6dddb6b55f0d92d300325ac31f1c135e 的一个小圆盾的数据
shield: {
_id: "7503f3385f115b2600154e3c7258252a",
name: "火烈之剑",
'other': '一堆属性'
},
},
//保存位置2 旧方案!
save2: {
// sword集合下 _id为 7503f3385f115b2600154e3c7258252a 的火烈之剑
sword: "7503f3385f115b2600154e3c7258252a",
// shield集合下 _id为 6dddb6b55f0d92d300325ac31f1c135e 的一个小圆盾
shield: "6dddb6b55f0d92d300325ac31f1c135e"
// 衣服
// 裤子
// 鞋子
// 戒指
// 耳环..以此类推
}
}
lookup:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.lookup.html
但是lookup性能很差,相当于嵌套查询。如果名称不怎么变,建议把真实数据直接放在用户表里,直接单表输出。
目前我的解决方式!
从云端获取用户数据后 在逐条get对应集合内指定的数据~
...
感觉非常不灵活,但能用~还是想寻求更骚的写法!