【问题标题】:Mongoose commands analogous to relational database commandsMongoose 命令类似于关系数据库命令
【发布时间】:2020-05-04 05:31:35
【问题描述】:

我对 Mongoose 中的模式、模型、模型实例和集合感到非常困惑。

我的理解如下:

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

这对吗?

【问题讨论】:

  • MongoDB 手册包含一个通用的SQL to MongoDB Mapping Chart,它涉及 SQL 和 MongoDB 之间的术语、概念和语句。 Mongoose 在官方MongoDB Node.js driver 之上增加了一个可选的抽象层,旨在为开发者提供更方便的接口。

标签: database mongoose nosql document-database


【解决方案1】:

你大部分是正确的。

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

还有一点需要注意的是,您所指的这个语法是 mongoose,而不是原来的 Mongo 语法。

  1. Mongoose.schema( { } ) 是的,猫鼬给了你“强制”结构的能力,注意这只会在尝试insert/create/update 文档时起作用,而不是在它出现时查询。

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

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

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

用于构建查询的查询构造函数。您不需要直接实例化查询。而是使用 Model.find() 等模型函数。

我个人只是使​​用Model函数来查询find,findOne,aggregate等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2015-05-10
    • 1970-01-01
    相关资源
    最近更新 更多