【发布时间】:2012-10-17 23:04:45
【问题描述】:
我是 mongodb 的超级新手。我正在使用 mongoose 从 node.js 访问 mongodb,并且知道如何让事情正常工作,但我认为我不明白为什么它会以这种方式工作。
最重要的是,当 mongodb 的突出特点之一是它没有模式时,我不明白为什么 mongoose 有“模式”。有人可以启发我吗?谢谢。
【问题讨论】:
-
我认为这是默认架构的情况,但是您可以在应用程序代码中动态添加字段,而无需更改整个表。一个例子是一个巨大的产品表,在 SQL 中添加一个字段既讨厌又慢,在 MongoDB 中只需将其添加到客户端模型中......
-
MongoDB 不是无模式的。它有灵活的架构 - 有很大的不同。
-
这是一个口味问题,Mongoose 让您拥有一个带有验证的类型化模式,如果您使用驱动程序,您将无法获得它,并且必须自己滚动。另一方面,Mongoose 层会在一定程度上影响原始性能,因为它会进行一些内务处理,这会比原始驱动程序花费更多时间。
-
我目前在 node/mongodb/mongoose 工作,但也深深扎根于 C#、LINQ 和 SQL Server。 Mongodb 确实有一个模式,但它的结构非常松散,因为它只是简单的对象、数组和 JavaScript 类型以及一些其他类型,如 ObjectId、Date 等。迫使您根据模式在代码中管理事物。 Mongoose 让您轻松定义数据结构,同时简化 mongodb 交互。我试过直接做 mongodb,而 mongoose 更方便,因为您不必发明自己的方式来强制执行您的架构。
-
与原始驱动程序相比性能较弱是Mongoose唯一的负面影响吗?是否还有其他陷阱或哥特式,或者它是否值得在几乎所有用例中实施?