mongodb - Mongoose DB Lookup 管道匹配问题
问题描述
我有 2 个收藏
一次是用户,一次是UserBmi
我打算加入收藏以查找最新的 BMI 记录。在此表中,一些用户不会上传他们的 BMI 记录。到数据库。我想返回结果的空行。但是,结果将返回所有用户都返回相同的记录(其中一个用户的最新 BMI 记录)。
当我匹配 2 个集合时,我会遗漏一些东西吗?
用户表
const userSchema = new mongoose.Schema({
usercardid:{
type:Number,
required: true,
unique: true
},
name:{
type:String,
required: true
}...
})
体重指数表
const userbmigoriesSchema = new mongoose.Schema({
user_id:{
type:mongoose.Schema.Types.ObjectId,
ref: "User"
},
user_height:{
type:Number,
required: true
},
user_weight:{
type:Number,
required: true
},
user_bmi:{
type:Number,
required: true
},
date:{
type: Date,
required: true,
default: Date.now()
}
})
const users = await User.aggregate([
{
$lookup:{
from: "userbmis",
let: {"uid": "user_id"},
pipeline: [{
$match: { $expr: { $eq: ["$$uid","$id" ]}}},
{$sort: {"date": -1}},
{$limit: 1}
],
as: "userbmis"
}
}
])
在这张图片中,所有的身高、体重、BMI 记录都属于第三个用户。
= MongooseDB 数据 在图像上,您可以看到第 2 行到第 6 行的 BMI 记录属于用户 608915308462c0ccec435a97。但是,当我查找数据时,每个用户都会得到相同的记录。
解决方案
推荐阅读
- python - 如何在 selenium 中使用多行脚本来执行脚本
- mongodb - MongoDB 健康检查失败 org.springframework.boot.actuate.mongo.MongoHealthIndicator"
- c - char * 和 void * 的对象表示
- html - Angular:无法在 PrimeNG FlexGrid 中并排定位两个 p-col-6
- android - 使用过滤结果更新列表时,Recyclerview 部分标题不可见
- reactjs - 在 useEffect 中使用异步函数的首选方式
- php - 如何用 preg_replace 或 str_replace 的自定义文本替换 div 中的文本?
- javascript - 登录成功时token已经存在,如何移动到主页?
- vb.net - 大于男性总数
- html - 在容器内创建一个 div 以自动调整大小