gpt4 book ai didi

node.js - 使用 mongoose 填充到 "join"匹配的子记录

转载 作者:可可西里 更新时间:2023-11-01 09:56:16 25 4
gpt4 key购买 nike

使用 node.js、mongoose (3.5+)、mongodb。在数据库中有两个集合:

var AuthorSchema = new mongoose.Schema({
name: { type: String },
});

var StorySchema = new mongoose.Schema({
title: { type: String },
author: { type: type: Schema.Types.ObjectId },
});

我想做的是检索作者并用从 Story 中查找并匹配作者的子集(比如“故事”)填充它。是的,很像 SQL 连接。

所有示例都在 AuthorSchema 上工作,该 AuthorSchema 具有一组引用 StorySchema 对象的 objectids - 工作正常。但我想走相反的方向;部分是由于最小化插入/更新。如果我按照这个例子,添加一个新商店需要添加一个新的 Story 文档并更新 Author。我只想插入一个引用作者的新故事。

我怀疑 populate() 是正确的方法,但无法让它工作。我正在做这样的事情:

Author.find({name: 'Asimov').populate({
path: 'stories',
model: 'Story',
match: {'author': this['_id']},
}).exec(function(err, authors) {
console.log(authors);
})

但这不会返回返回作者中的任何故事成员。这不是 populate() 解决方案吗?我真的需要以不同的方式构建模式吗?或者 mongoose/mongo 是否有其他一些功能可以满足我的需求。

最佳答案

在故事模式中,这样做:

author: { type: type: Schema.Types.ObjectId, ref:'Author' }, //or whatever the model name is

然后就可以运行了

Story.find({}).populate('author').exec(function(err,stories) {...});

关于node.js - 使用 mongoose 填充到 "join"匹配的子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19371336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com