在MongoDB中使用引用而不是带有_id的字符串有好处吗?

时间:2019-01-28 18:01:25

标签: node.js mongodb mongoose

我们正在构建一个API,并决定在做这样的引用之间:

var postSchema = Schema({
  user: { type: Schema.Types.ObjectId, ref: 'User' }
});

或仅将String_id一起使用:

var postSchema = Schema({
  user: { type: String }
});

以任何一种方式进行这样做有什么好处吗?

2 个答案:

答案 0 :(得分:1)

猫鼬模式与MongoDB内部工作无关。如果您使用此选项,则基于偏好设置:

var postSchema = Schema({
  user: { type: Schema.Types.ObjectId, ref: 'User' }
});

猫鼬会给您比其他解决方案一些优势。 Population是其中之一。

答案 1 :(得分:0)

Mongoose 提供了一种机制来查询 ref 对象作为响应,如果 Schema 定义如下所述

var postSchema = Schema({
  title: {type: String}
  user: { type: Schema.Types.ObjectId, ref: 'User' }
});

然后查询就像

Post.
  findOne({ title: "Let's learn" }).
  populate('user').
  exec(function (err, post) {
    if (err) return handleError(err);
    // your post with user details
  });

这是一个用例, 查看此文档 https://mongoosejs.com/docs/populate.html 以获取有关 ref 的更详细说明和用例。