mongoose 数据查询问题?
需求描述:
mongodb中有两个collection,theme存储主题的主要信息,同时包含有产品id的数组,现在想通过产品的详细id找出products中产品的详细信息,应该如何查询呢?或者有更好的设计思想吗?
theme(主题)
{
'thmemId':'001',
'title':'theme1',
'productsId':[1,2,5]
}
products(产品)
{
'id':'1',
'title':'玩具',
'price':25
},
{
'id':'2',
'title':'鲜花',
'price':12
},
{
'id':'5',
'title':'电脑',
'price':4000
}
最终想实现的效果如下:
{
'thmemId':'001',
'title':'theme1',
'productsId':[
{
'id':'1',
'title':'玩具'
'price':25
},
{
'id':'2',
'title':'鲜花'
'price':12
},
{
'id':'5',
'title':'电脑'
'price':4000
}
]
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
写一个伪代码,不知道能否满足你的需求.
populate
使用
populate
查询处理的数据会到Products
查找然后自动填充到productsId
里面思路:我觉得一个product的数据是一个改动频率不是很大甚至没有的数据,所以我觉得可以把product的数据直接到到theme下面如
如果你想改动某个product的数据。你只要改了product表里的,再去theme里找有没有这个product的一起改了就行了。
如果你改动不了数据结构,或者觉得改动数据结构会有其他问题。那就查询吧,用Aggregation Pipeline,先$unwind,再$lookup,再$group就行了,我给你api,你自己看吧
Aggregation Pipeline