mongoose Node js是否像Spring一样有高级Map?

dced5bon  于 2023-10-19  发布在  Go
关注(0)|答案(1)|浏览(99)

我想将一个文档存储在另一个文档中,在Spring中使用Spring Data MongoDB时有DBRefDocumentReference。我找不到任何与Mongoose相似的东西。Node js中的等价物是什么?这就像Spring是一个更重的后端,而Node js不是那么强大。

62lalag4

62lalag41#

这在Mongoose中可以通过nodeJS实现,但有两种不同的方法。
最简单的方法是为包含下一个模式的字段使用ObjectId类型,但这适用于通过用户ID或反向搜索任务。
这里有一个例子

var UserSchema = new Schema({
        name        : String,
    })
    
    var TaskSchema = new Schema({
        name            : String,
        user            : Schema.ObjectId
    });

const tasks = await Task.find({user: user_id});

这里有一个Mongoose文档供您参考
但还有另一种方法来处理 Mongoose 种群。这里有一个例子。

const personSchema = Schema({
  name: String,
  stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

const storySchema = Schema({
  author: { type: Schema.Types.ObjectId, ref: 'Person' },
  title: String,
});

下面是如何将数据保存到上面的模式。

const author = new Person({
  name: 'Ian Fleming',
});

await author.save();

const story1 = new Story({
  title: 'Casino Royale',
  author: author._id // assign the _id from the person
});

await story1.save();

下面是如何通过给出故事名称来获取作者详细信息。

const story = await Story.
  findOne({ title: 'Casino Royale' }).
  populate('author').
  exec();
// prints "The author is Ian Fleming"
console.log('The author is %s', story.author.name);

这里是一个关于populate函数的Mongoose文档。

相关问题