Mongodb 猫鼬模式定义

Mongodb 猫鼬模式定义,mongodb,mongoose,mongoose-schema,Mongodb,Mongoose,Mongoose Schema,我是MongoDB的初学者,正在努力学习MEANStack。所以我用它作为ORM 我读到MongoDB是一个NoSQL数据库,但是当使用Mongoose作为ORM时,我被要求首先创建一个模式。为什么会这样?理想情况下不应该有模式,因为MongoDB是一个NoSQL数据库 提前感谢。Mongoose是mongodb之上的orm,如果您使用的是core mongodb,您无需创建任何模式,您只需转储您想要的任何数据,但在Mongoose中,您有一个模式,这样您就可以拥有一些基本的键值对用于高级搜索和

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

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


提前感谢。

Mongoose是mongodb之上的orm,如果您使用的是core mongodb,您无需创建任何模式,您只需转储您想要的任何数据,但在Mongoose中,您有一个模式,这样您就可以拥有一些基本的键值对用于高级搜索和筛选,并且您可以随时更新模式。或者,如果您想要无模式并转储响应,您可以使用类似于var someSchema={data:Object}的模式类型,并将所有数据放在这个数据键中,然后您可以轻松提取id字段中的JSON数据

var mongoose = require('mongoose');

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

    });
在上面的示例中,dump用于将我从twitter api获得的任何JSON保存为响应,并且created_at只包含tweet的创建日期,因此我拥有全部数据,但是如果我想搜索某个特定日期的推文,我可以在created_at上使用find查询进行搜索,这个查询会快得多,在这里,我有一个固定的结构,并且知道每次运行find查询时对find查询的期望,因此,这是使用mongoose orm的好处之一,即我不会丢失数据,但我可以通过创建适当的键来最大限度地提高我的搜索能力


因此,mongoose基本上是一个ORM db,它为您提供了关系数据库功能,比如创建外键,而不是严格意义上的外键,但您可以创建类似于对另一个模式的id引用,然后在使用find查询获取数据时,通过id相关参数填充字段,此外,关系模式也易于管理,mongoose所做的是,它为基于JSON/BSON的数据库提供了关系数据库的强大功能,您可以充分利用这两种功能,即您可以轻松维护新密钥,或者您不必担心从操作中提取每一个数据并正确放置/插入数据,您只需要查看您的键和值是否匹配,以及在使用模式或表结构时是否具有更新操作的灵活性。

schema只是为了确保在数据库中保持一致性