【发布时间】:2020-11-02 23:50:22
【问题描述】:
我正在尝试加入 Mongoose。
我有两个收藏
-
大师挑战
-
挑战历史
我的挑战历史包含一个归档 master_id,它是对 Master Challenge 的 _id 的引用
大师挑战模型
const mongoose = require('mongoose');
const masterChallenge = mongoose.Schema({
title:{
type:String,
},
descripton:{
type:String,
},
challengeType:{
type:Number,
},
});
module.exports = mongoose.model('masterChallenge',masterChallenge);
挑战历史模型
const mongoose = require('mongoose');
const challangeHistory= mongoose.Schema({
master_id:{
type: mongoose.Schema.Types.ObjectId,
ref:'masterchallenges'
},
host_user_id:{
type: mongoose.Schema.Types.ObjectId,
ref:'useraccounts'
},
compete_with_id:{
type: mongoose.Schema.Types.ObjectId,
ref:'useraccounts'
},
adjucator_id:{
type: mongoose.Schema.Types.ObjectId,
ref:'useraccounts'
},
status:{
type:Number,
},
created_at:{
type:Date,
}
});
module.exports = mongoose.model('challangeHistory',challangeHistory);
id = 'user _id'(用于以下段落)
我想通过 Master Challenge 执行 join 以仅从 Master Challenge 中获取具有 host_user_id==id 或 compete_with_id==id 或 adjucator_id 的记录==id 如果我的主挑战类型为 1 否则挑战状态为 0 那么它不应该对 host_user_id 或 compete_with_id 或 adjucator_id 执行任何操作strong> 并返回带有 Challenge 0 的文档。
我的查询
findMasterOnHistory:async function(id){
let dbResponse = await MASTER_CHALLENGE.aggregate([
{$lookup:{from:'challangehistories',localField:'_id',foreignField:'master_id',as:'challangehistories'}},
]);
return dbResponse;
}
我尝试了很多似乎不起作用的东西,但我不知道如何在 $lookup 上添加条件。
【问题讨论】:
-
这是否回答了您的问题:stackoverflow.com/questions/59903417/… ?