可以在MongoDB中定义模式吗?

Meg*_*Dev 3 mongodb

我知道MongoDB是无模式的.但是,我有一些对象/实体的数据模型,我有一组明确定义的属性,它们将包含它们.例如,如果我有一个学生实体,我知道它的json看起来像

{
  name: "string",
  id: "int",
  class: "string"
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用MongoDB定义此架构?如果无法做到这一点,那么如何验证用户是否已发送完整集来创建新学生?

Sal*_*ali 5

Mongodb不是一个适用于所有问题的神奇解决方案.其中一个优点是无模式,所以如果你的集合具有绝对固定的模式 - 那么考虑使用其他sql dbs(你将摆脱大量的开销).

如果你真的想要定义模式 - 在vanilla mongo中不可能这样做,但是与许多流行的技术一样,有一些可用的库.其中一个允许定义模式的是Mongoose.它不是唯一的,你会发现很多类似的工具.

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var blogSchema = new Schema({
  title:  String,
  author: String,
  body:   String,
  comments: [{ body: String, date: Date }],
  date: { type: Date, default: Date.now },
  hidden: Boolean,
  meta: {
    votes: Number,
    favs:  Number
  }
});
Run Code Online (Sandbox Code Playgroud)

PS如果您不想使用任何其他库,您可以在应用程序层中定义架构并在将其添加到db之前验证每个文档,但在开始使用新技术之前,很高兴看到它是否适合.为了使用技术而使用技术从来都不是一个好主意.