gpt4 book ai didi

node.js - Mongoose 仅​​查找那些在另一个集合中有条目的人

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:25 26 4
gpt4 key购买 nike

我正在尝试使用 Mongoose 在集合中查找条目,但我只想要在另一个集合中具有条目的条目。

更具体地说:
我有一个收藏“帖子”

    var postSchema = new Schemas({
postedBy:{type: mongoose.Schema.Types.ObjectId, ref: 'User'},
group:{type: mongoose.Schema.Types.ObjectId, ref: 'Group'},
postContent: String
});

集合“组”:

    var groupSchema = new Schemas({
name: String,
creator:{type: mongoose.Schema.Types.ObjectId, ref: 'User'},
interes: String,
public: Boolean
});

和一个集合“groupMember”:

var groupMemeberSchema = new Schemas({
group:{type: mongoose.Schema.Types.ObjectId, ref: 'Group'},
user:{type: mongoose.Schema.Types.ObjectId, ref: 'User'}
});

我想要的是从用户所属的群组中检索所有帖子。

类似于:

    groupmembers.find({user: req.user._id}, (err, groupsThatTheUserIn) => {
post.find(({$where: this.group EXIST_IN(groupsThatTheUserIn)}, (err, posts) => {
res.json(posts);
}))

})

但是 Mongoose 中没有exist_in()函数

最佳答案

要从用户所属的群组中检索所有帖子,您可以使用聚合框架,其中 $lookup 可供您使用单个查询来连接相关集合。

例如,运行以下聚合操作将返回所需的帖子:

groupmembers.aggregate([
{ "$match": { "user": mongoose.Types.ObjectId(req.user._id) } },
{
"$lookup": {
"from": "posts",
"localField": "group”,
"foreignField": "group",
"as": "posts"
}
},
{
], (err, results) => res.json(results[0].posts))

关于node.js - Mongoose 仅​​查找那些在另一个集合中有条目的人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com