首页 > 解决方案 > 如何在 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
}

如何访问和显示帖子字段的内容?

谢谢!

标签: javascriptnode.jsmongodbmongoose

解决方案


您可以使用 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:如果有什么不明白的地方欢迎评论。

谢谢


推荐阅读