如何在mongoose中声明字段的schematype / datatype,这是另一个集合中项目的目标?

时间:2013-12-02 11:52:31

标签: node.js mongodb mongoose

当使用Mongoose时,我对MongoDB中的某些东西感到有些困惑,因为我是新手。我有两个集合:作者和帖子。

authors集合中的每个作者都有与它们相关联的mongodb内置id,根据我的理解,它是schematype / datatype Objectid

现在在我的帖子集合中,我有一个名为author的字段,它应该具有作者Objectid的值,类似于SQL中的外键概念。

我的问题是,我应该在posts集合中声明作者字段的schematype / datatype?我应该把它作为Objectid吗?如果是这样,它会不会自动递增而不能设置吗?

模式的样机:

var authors = new mongoose.Schema({
name: String,
email: String
});

var posts = new mongoose.Schema({
title: String,
author: **??**
});

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用population

var authors = new mongoose.Schema({
  name: String,
  email: String
});

var posts = new mongoose.Schema({
  title: String,
  author: { type: Schema.Types.ObjectId, ref: 'Author' }
  // assuming the model will be called 'Author'
});

使用:

// Get 'author' some how (create a new one, query the
// database for existing authors, etc);
...

// Create a new post and associate it with 'author' by referencing its `_id`:
var post = new Post({
  ...
  author : author._id
});
post.save(...);

上面链接的文档还说明了在查询帖子时如何让Mongoose自动检索author文档。