javascript - 如何在 mongodb 中获取和显示引用的数据?
问题描述
我创建了两个模型用户并在用户参考帖子的位置发布。这是我的用户模型。
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/demo",{ useNewUrlParser: true });
var Post = require('./post');
var UserSchema = mongoose.Schema({
username: String,
password: String,
posts:[{
type:mongoose.Schema.Types.ObjectId,
ref: Post
}] });
这是我的帖子模型
var postSchema = mongoose.Schema({
title:String,
content: String,
likes:Number
});
当我创建新帖子并将其保存给特定用户时,我会在用户模型的帖子字段中获得一个 id。像这样:-
{
posts: [
60e33a2d18afb82f8000d8f0,
],
_id: 60d9e931b5268920245c27f0,
username: 'user1',
password: '1234',
__v: 5
}
如何访问和显示帖子字段的内容?
谢谢!
解决方案
您可以使用 Aggregate 在 MongoDB 中获取和显示参考数据。
喜欢:
await User.aggregate([
{
$match: { _id: ObjectId(user._id)}
},
{
$lookup: { from: "Posts", localField: "post", foreignField: "_id", as: "posts" }
},
{
$unwind: { path: "$users", preserveNullAndEmptyArrays: true,}
}, {
$project: {
" Now you can select here whatever data you want to show "
}
}
])
PS:如果有什么不明白的地方欢迎评论。
谢谢
推荐阅读
- php - 如何在数据库中选择特定用户并仅显示他的信息?
- visual-studio-code - 没有与“启用自定义 CSS 和 JS”匹配的命令
- powershell - 将 CSV 文件导入现有 Excel 工作簿中的新 Excel 工作表
- c# - 我如何知道队列何时结束我的线程消耗了 MQ 消息
- python - 对包含字符串的熊猫数据框中的列进行求和
- time-series - Druid Timeseries 行计数聚合
- vue.js - 如何在方法中使用 Vuex 状态数据
- php - Apache 在启动库未加载时给出错误原因:即使文件存在,也找不到图像
- c# - NavigationView.Loaded 方法没有被调用
- documentum - 即使没有添加到restricted_folder_ids 中,是否可以向用户显示其他文件柜?