,可以使用mongoose的populate方法来实现。populate方法可以将一个文档中的引用字段自动替换为引用文档的实际内容。
具体步骤如下:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
age: Number,
posts: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }]
});
const postSchema = new mongoose.Schema({
title: String,
content: String,
author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});
const User = mongoose.model('User', userSchema);
const Post = mongoose.model('Post', postSchema);
const user = new User({
name: 'John',
age: 25,
posts: []
});
const post = new Post({
title: 'Hello World',
content: 'This is my first post',
author: user._id
});
user.posts.push(post._id);
user.save();
post.save();
User.findOne({ name: 'John' })
.populate('posts')
.exec((err, user) => {
if (err) {
console.error(err);
return;
}
console.log(user);
});
上述代码中,通过findOne方法查询到名为'John'的用户文档,并使用populate方法将其posts字段替换为实际的Post文档内容。最后,通过exec方法执行查询,并在回调函数中获取查询结果。
这样,就可以从两个单独的Mongo文档中获取信息,并且通过populate方法将关联字段的引用替换为实际内容。在这个例子中,User文档中的posts字段被替换为了对应的Post文档内容。
推荐的腾讯云相关产品:腾讯云数据库MongoDB,详情请参考腾讯云数据库MongoDB。
DBTalk
Elastic 中国开发者大会
Elastic 中国开发者大会
云+社区技术沙龙[第6期]
云+社区技术沙龙[第14期]
云+社区开发者大会 长沙站
云+社区技术沙龙[第12期]
云+社区沙龙online第5期[架构演进]
云+社区技术沙龙 [第30期]
【产研荟】直播系列
领取专属 10元无门槛券
手把手带您无忧上云