我正在构建新的应用程序并现在设计它的结构,这是关于为什么使用或不使用猫鼬的一些想法:
- 猫鼬会变慢(对于大型应用程序)
- 猫鼬难以处理更复杂的查询
- 在某些情况下,当您需要更高的速度时,您会选择不使用猫鼬,那么您将有一半的猫鼬查询和一半的w / o。那是一次疯狂的情况。
- 猫鼬将使您使用具有简单数据库结构的简单应用程序来更快地编写代码
- 猫鼬会让您阅读mongodb文档和mongoose文档
- 使用猫鼬,您的堆栈将获得更多依赖,而崩溃和燃烧成灰烬则是另一种可能性。
mongodb驱动程序是原始驱动程序,您可以直接与mongodb通信。猫鼬是抽象层。当您的数据库结构足够简单时,您可以更轻松地对db进行I / O。
抽象带来了它的要求,您必须遵循这些要求。您的应用程序将变慢,占用更多的RAM并变得更加复杂,但是如果您知道如何使用它,则可以更快地编写简单的对象,然后将它们保存到数据库中。
没有mongoose,您将可以直接连接到mongodb,从而拥有更快的应用程序。没有人说过,您无法编写自己的模型来将内容保存到db。您可以。而且我认为这更容易。您编写了将要使用的代码,知道了您所需要的。您的抽象层会更小,然后是猫鼬。
我来自PHP世界,那里的原始sql的mysql_函数已贬值,然后有了PDO-面向对象的抽象层与sql进行通信。或者,您可以选择诸如Doctrine之类的繁重的ORM,使其在mongoDB上具有与mongoose类似的功能。具有setter / getters / save方法的对象,依此类推。很好,但是通过添加更多抽象,您将添加更多文件,更多逻辑,更多文档,更多依赖项。我喜欢使事情保持简单,并减少堆栈中的依赖。顺便说一句,这就是为什么我首先从PHP转到服务器-客户端Javascript的原因。
我认为使用mongoose编写一些简单的应用程序非常好,这些应用程序具有类似于sql的简单db结构。当您开始拥有子文档并想要进行所有这些疯狂的查询时,我发现使用猫鼬真的很难。您必须先查看mongodb文档,然后再查看mongoose文档,以了解如何进行所需的查询。有时,您会发现mongodb的X未来版本不在mongoose中,因此您使用了原始mongodb驱动程序,并在一个或另一个位置编写了原始mongodb查询。没有猫鼬,您可以查看mongodb文档并进行查询。