类似于关系数据库命令的 Mongoose 命令

Mongoose commands analogous to relational database commands

我对 Mongoose 中的架构、模型、模型实例和集合感到很困惑。

我的理解如下:

  1. Mongoose.schema( { } ) - 类似于在关系数据库
  2. 中定义 table 的列
  3. Mongoose.model( 'Name', Schema) - 类似于在关系数据库中创建 table (创建 table 语句)
  4. new Model ({ //DATA }) - 类似于在关系数据库中创建一行
  5. new Model().query() - 类似于关系数据库中的查询语句(general Query)

这是正确的吗?

你基本上是对的。

首先,MongoDB 本质上是非结构化的,因此我建议不要试图找到 "analogies" 来将其与结构化方案相匹配。鉴于上述相似之处确实存在,因此为简单起见,我们可以这样做。

另外请注意,您所指的语法是 mongoose,而不是原始的 Mongo 语法。

  1. Mongoose.schema( { } ) 是的,mongoose 使您能够 "force" 一个结构,注意这只会在尝试 insert/[=14 时发挥作用=]/update 文档而不是在查询时。

  2. Mongoose.model('Name', Schema) 是的,mongoose 本身不会创建数据库,这意味着如果它不存在,将创建一个新的数据库,但是将文档插入该模型将创建一个这样的集合。

  3. new Model ({ //DATA })可以,但是需要加new Model().save(),不保存不会触发保存到数据库

  4. new Model ().query() 是的,再次类似于 model 函数,这是一个猫鼬包装器(我不太熟悉)如 docs:

Query constructor used for building queries. You do not need to instantiate a Query directly. Instead use Model functions like Model.find().

我个人只是使​​用模型函数来查询 findfindOneaggregate 等。