1. Models(模型)

Model 是从我们的模式定义编译后的奇特的构造函数。这些模型的实例代表文档,文档可以被保存,可以被从数据库查找。从数据库中创建和检索所有文档都由这些模型处理。

1.1. 编译你的第一个模型:

var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var Tank = mongoose.model('Tank', schema);

第一个参数是你的模型的集合的单数名称。 mongoose 自动寻找您的模型名称的复数版本。 因此,对于上面的例子,模型 Tank 是用于数据库中 tanks 的收集。 .model() 函数生成『模式』的副本。在调用 .model() 之前,确保你已经添加了你想要的模式。

1.2. 构造文档

文档 是模型的实例。创建它们并保存到数据库非常简单:

var Tank = mongoose.model('Tank', yourSchema);

var small = new Tank({ size: 'small' });
small.save(function (err) {
  if (err) return handleError(err);
  // saved!
})

// or

Tank.create({ size: 'small' }, function (err, small) {
  if (err) return handleError(err);
  // saved!
})

请注意,除非您的模型使用的连接打开,否则不会有 tank 被创建/移除。每个模型都有一个关联的连接。当你使用 mongoose.model() 时,你的模型将使用默认的 mongoose 连接。

mongoose.connect('localhost', 'gettingstarted');

如果您创建自定义连接,请改用该连接的 model() 函数。「译者注」:一个是 mongoose.model、一个是 connection.modele

var connection = mongoose.createConnection('mongodb://localhost:27017/test');
var Tank = connection.model('Tank', yourSchema);

1.3. 查询

使用 Mongoose 查找文档很容易,它支持 MongoDB 丰富的查询语法。可以使用每个模型 findfindByIdfindOnewhere 静态方法来检索文档。

Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);

有关如何使用 Query API的更多详细信息,请参阅查询一章。

1.4. 删除

模型有一个静态的 remove 方法可用于删除所有文件匹配条件。

Tank.remove({ size: 'large' }, function (err) {
  if (err) return handleError(err);
  // removed!
});

1.5. 更新

每个模型都有其自己的更新方法,用于修改数据库中的文档而不将它们返回到应用程序。有关更多详细信息,请参阅 API 文档。

如果要更新数据库中的单个文档并将其返回给您的应用程序,请改为使用 findOneAndUpdate

1.6. 还有更多

API 文档涵盖了许多其他可用的方法,如 countmapReduceaggregate

1.7. 接下来

现在我们已经介绍了 Models,让我们来看看 Documents

Copyright © tuzhu008 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-12-24 11:02:05

results matching ""

    No results matching ""