我有两个模式
var UserSchema =new mongoose.Schema({
username:String,
password:String,
user_email:String,
user_contacts:[
{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
}
]
})
module.exports=mongoose.model("User",UserSchema);
和
var friendRequestSchema=new mongoose.Schema({
requester:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
recipient:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
//1 for requested , 2 for accepted , 3 for rejected
status:Number
});
module.exports=mongoose.model("FriendRequest",friendRequestSchema);
并且我想为 requester 字段查找所有具有特定用户ID的朋友请求,然后我希望获得这些请求的所有收件人用户, 最后将它们添加到词典中,其中的键是收件人用户,值是与之关联的 friendRequest ,这样我就可以将其传递给这样的ejs文件: / p>
res.render("myrequests",{myDictionary:myDictionary});
答案 0 :(得分:2)
您现在可以使用$lookup
在Mongo 3.2中做到这一点$ lookup需要四个参数
from:在同一数据库中指定要执行连接的集合。无法对from集合进行分片。
localField:指定从文档输入到$ lookup阶段的字段。 $ lookup对from集合中的文档中的localField和foreignField执行相等的匹配。
foreignField:指定from集合中文档中的字段。
as:指定要添加到输入文档中的新数组字段的名称。新的数组字段包含from集合中的匹配文档。
db.Foo.aggregate(
{$unwind: "$bars"},
{$lookup: {
from:"bar",
localField: "bars",
foreignField: "_id",
as: "bar"
}},
{$match: {
"bar.testprop": true
}}
)
希望这可以解决您的问题!