我是MongoDB
的初学者并且正在尝试学习MEAN
Stack。所以我使用Mongoose
作为ORM
我读到MongoDB是一个NoSQL数据库,但是当使用Mongoose
作为ORM时,我被要求首先创建一个模式。为什么会这样?理想情况下不应该有一个模式,因为MongoDB是一个NoSQL数据库。
提前致谢。
答案 0 :(得分: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
}
});
在上面的示例中,dump用于保存我从twitter api获得的任何JSON作为响应,created_at仅包含tweet的创建日期,因此我拥有整个数据,但是如果我想搜索特定日期的推文我可以使用created_at上的查找查询来搜索它,这个查询会快得多,在这里我有一个固定的结构和每次运行一次查找查询的期望,所以这是使用的好处之一猫鼬orm即我不会丢失数据,但我可以通过创建合适的密钥来最大化我的搜索能力。
所以基本上mongoose是一个ORM数据库,它为你提供关系数据库功能,比如创建外键,而不是严格的外键,但是你可以创建类似于对另一个模式的id引用之类的东西,然后当你使用id相关参数填充该字段时使用查找查询获取数据,关系模式也很容易管理,mongoose所做的是它为基于JSON / BSON的数据库提供了关系数据库的强大功能,你可以在世界上获得最佳效果,即你可以轻松维护新的密钥或者你不需要担心从操作中提取每个数据并正确放置/插入它,您只需要看到您的键和值匹配,以及您在具有模式时具有更新操作的灵活性或表结构。