例如我有两个模型
const User = new Schema({
name: { type: String },
});
const Message = new Schema({
user: { type: ObjectId, ref: 'User' },
message: { type: String },
});
如何通过用户中的"name"键查找消息?
不管用
exports.get = async (req, res) => {
return Message.find({ "user.name": req.query.name })
.populate('user', 'name')
.then((data) => res.json(data));
}
我明白为什么"www.example.com"不起作用,但我不知道如何解决它user.name" doesn't work, but I don't know how to solve it
3条答案
按热度按时间hl0ma9xz1#
Mongodb中没有 join 的概念,因此我建议使用如下的直接模式定义:
那么你就不需要再用
populate
了,你会得到这样的代码:但是,如果您仍然喜欢使用当前的方法,您可以尝试这个:
91zkwejq2#
您可能希望使用$lookup:
hgqdbh6s3#
基本上,您需要表的正确排序,用户必须是主表,消息必须是从中查找的辅助表。查询如下所示;
或者,如果你想要一个干净或更好的结果,那么你可以做以下:
这将返回所有消息作为一个数组与字段名消息的“姓名”的人,例如;