【问题标题】:Mongoose schema definition [duplicate]猫鼬模式定义[重复]
【发布时间】:2017-11-20 13:48:25
【问题描述】:

我是MongoDB 的初学者,正在努力学习MEAN Stack。所以我使用Mongoose 作为 ORM

我读到 MongoDB 是一个 NoSQL 数据库,但是在使用 Mongoose 作为 ORM 时,我被要求先创建一个模式。为什么会这样?理想情况下不应该有模式,因为 MongoDB 是 NoSQL 数据库。

提前致谢。

【问题讨论】:

  • Schema 只是为了确保您在数据库中保持一致性

标签: mongodb mongoose mongoose-schema


【解决方案1】:

Mongoose 是 mongodb 之上的一个 orm,如果你使用核心 mongodb,你不需要创建任何模式,你可以转储任何你想要的数据,但是在 mongoose 中你有一个模式,所以你可以有一些基本的键用于高级搜索和过滤的值对,您可以随时更新架构。或者,如果您想要无模式并转储任何响应,您可以使用像这样的模式类型 var someSchema = {data:Object} 并将所有数据放入此数据键中,然后您可以轻松提取您内部的任何 JSON 数据id 字段。

var mongoose = require('mongoose');

    module.exports = mongoose.model('twitter', {
        created_at:{
            type:Date
        },
        dump:{
            type:Object
        }

    });

在上面的示例中,转储用于保存我从 twitter api 获得的任何 JSON 作为响应,并且 created_at 仅包含推文的创建日期,因此我拥有整个数据,但如果我想搜索特定日期的推文我可以使用 created_at 上的 find 查询来搜索它,这个查询会快得多,在这里我有一个固定的结构,并且知道每次运行一个 find 查询时会发生什么,所以这是使用的好处之一mongoose orm 即我不会丢失数据,但我可以通过创建适当的键来最大化我的搜索能力。

所以基本上 mongoose 是一个 ORM 数据库,它为您提供关系数据库功能,例如创建外键,而不是严格的外键,但您可以创建类似 id 对另一个模式的引用,然后在您使用 id 相关参数填充字段时使用您的查找查询获取数据,关系模式也易于管理,猫鼬所做的是它为基于 JSON/BSON 的数据库提供了关系数据库的强大功能,您可以两全其美,即您可以轻松维护新密钥或您无需担心从您的操作中提取每一个数据并将其正确放置/插入,您只需要查看您的键和值是否匹配,并且在拥有架构或表时可以灵活地进行更新操作结构。

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2013-09-22
    • 2015-11-08
    • 2018-10-09
    • 2020-05-18
    • 2021-01-25
    • 2016-08-05
    • 2021-08-19
    • 2016-09-02
    相关资源
    最近更新 更多