mongodb - MongoDB 如何正确 $lookup 2 文档?
问题描述
抱歉,我是菜鸟,我正在使用查找两个文档,这里有 3 个表:
const Product = {
id: ObjectId,
name: String
}
const user = {
id: ObjectId,
name: String
}
const comment = {
id: ObjectId,
product: ObjectId('product'),
user: ObjectId('user'),
parentComment: ObjectId('comment')
text: String
}
const rate = {
id: ObjectId,
product: ObjectId('product'),
user: ObjectId('user')
rate: Number
}
当用户想要查看特定产品时,我向他们显示产品的评论和评分,首先我查询评论而不是查询发布评论的用户以及他们对产品评分的评分值,我实现查找这:
commentModel.aggregate([
{
$match:{
product: mongoose.Types.ObjectId(req.query.productID),
parent: null
},
},
{
$lookup:
{
'from': 'users',
'localField': 'user',
'foreignField': 'id',
'as': 'user'
}
},
{
$lookup:
{
'from': 'rates',
'pipeline': [
{ $match: {product: mongoose.Types.ObjectId(req.query.productID), user: 'user.id'}}
],
'as': 'rateValue'
}
}
])
查找第一个工作正常,但速率没有,它总是返回空数组,有人可以帮助我,谢谢
解决方案
你也可以试试这个
[
{
$match:{
product: mongoose.Types.ObjectId(req.query.productID),
parent: null
},
},
{
$lookup: {
'from': 'users',
'localField': 'user',
'foreignField': 'id',
'as': 'user'
}
},
{
$lookup: {
'from': 'rates',
'localField': 'user',
'foreignField': 'user',
'as': 'rateDetail'
}
},
{
$unwind: '$rateDetail'
},
{
$match: {
'$rateDetail.product':mongoose.Types.ObjectId(req.query.productID)
}
}
]
推荐阅读
- python - 如何在 Python 中将 3 个数组绘制为曲面图
- android - UncheckedIOException:java.nio.file.AccessDeniedException
- operating-system - 操作系统如何知道首先要启动哪些文件?
- ubuntu-18.04 - 为什么我的主机名和 /etc/hostname 在重新启动时会被重置?
- matlab - 使用 CVX 的强凸问题具有 UNBOUNDED 状态
- javascript - 使用jquery成功检查时如何更改父位置窗口
- oracle - 一输入多查询
- java - Java - “变量名”无法解析为变量 - 我找不到我的错误在哪里
- python - Django - 视图未呈现为 HTML
- jsf - 关闭选项卡/窗口后,OmniFaces 不会破坏 ViewScoped bean