Mongoose:选择引用另一个文档的文档

电影

我想在我的 MongoDB\Mongoose 项目中创建一个带有注释的项目。由于这是我使用 MongoDB 的第一个项目,我有一个奇怪的问题:

我需要一个这样的项目文档

var itemSchema = new mongoose.Schema({
name: String
});

我需要对这个项目的评论是这样的:

var commentSchema = new mongoose.Schema({
text: String,
itemId: {type: mongoose.Schema.Types.ObjectId, ref: 'Item' },
});

而且我不想在我的项目文档中保留评论 ID,如下所示:

var itemSchema = new mongoose.Schema({
name: String,
comments: [ {type: mongoose.Schema.Types.ObjectId, ref: 'Comment' } ]
});

那么如果我只知道价值,应该如何调用模型Item来获取comments这个项目的所有信息Item.name我可以populate()在一个 mongoose 请求中做到这一点,还是我必须提出两个请求(第一个Item是查找_id,第二个是去Comments哪里itemId == Item._id

或者也许我这样做完全错误?

米奇

您可以使用虚拟人口

itemSchema.virtual('comments', {
    ref: 'Comment', // The model to use
    localField: '_id', // Find comments where `localField`
    foreignField: 'itemId', // is equal to `foreignField`
});

然后如果你有文件 item,你会做

item.populate('comments').execPopulate().then(() => {
    console.log(item.comments);
});

我们使用execPopulate()是因为您只想填充评论。

如果你有模型 Item,你会做

Item.findOne(...).populate('comments').exec((err, item) => {
    console.log(item.comments);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何链接/引用文档中的另一个reST文件?

JSON模式引用文档中的另一个元素

Firestore引用了如何从另一个收集文档ID获取收集值

Cloud Firestore:如何引用另一个文档?

在Firestore中创建一个文档,其中包含对另一个集合中现有文档的引用

Firestore(Angularfire)“合并”或在另一个文档中引用一个文档

如何删除一个集合中的引用文档及其从另一个引用集合中的记录

如何在一个集合中查找未被另一个集合中的文档引用的MongoDB文档?

如果MongoDB和Mongoose存在另一个匹配的文档,请添加字段

从另一个文档引用Firebase文档变量

查询以获取另一个引用的所有Cosmos DB文档

Word文档如何引用另一个文件或文档?

在另一个Collection Mongodb中的子文档中引用_id

是否可以在另一个Word文档中创建对标题编号的交叉引用?

从字段引用Word文档中另一个表中的单元格

如何获取另一个集合中引用的MongoDB文档的列表

通过Mongoose在MongoDB中存储嵌入到另一个文档中的文档副本

如何从文档的实例方法中找到另一个Mongoose文档(按ID)?

如何在文档Xcode中添加到另一个方法的链接/引用?

查找另一个ObjectId引用的嵌套文档

MongoDB支持从一个文档到另一个文档的引用。DynamoDB是否支持相同功能?

MongoDB:根据文档中的另一个属性从数组中选择元素

Mongoose Aggregate获取所有与一个条件匹配的文档,这些文档由一组与另一个条件匹配的文档引用

PyMongo:使用 $push 更新现有文档并引用另一个文档

如果模式相互引用,我可以从另一个文档中提取值吗?

Mongoose ADDING/SUMING 子文档数组值位于另一个子文档数组中

打字稿:如何在本文档中引用另一个文档的字段?

Mongoose / MongoDB - 在另一个文档中按数组查询

findById 返回所有字段,除了引用另一个文档的字段