Mongodb的僧侣vs猫鼬

Posted

技术标签:

【中文标题】Mongodb的僧侣vs猫鼬【英文标题】:monk vs mongoose for Mongodb 【发布时间】:2014-06-30 04:33:51 【问题描述】:

我正在学习 NodeJs。

为了从 NodeJS 连接和使用 MongoDB,我看到很多使用 Monk 或 Mongoose 的示例。

这两个库是等效的吗?它们是否具有相同的功能,或者它们每个都有特定的用途?

作为 NodeJS 的初学者,我应该使用哪个?

以下是一些使用 Monk 的代码示例:

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodejsapp');

----
exports.userlist = function(db) 
    return function(req, res) 
        var collection = db.get('users');
        collection.find(,,function(e,docs)
            res.render('userlist', 
                "userlist" : docs
            );
        );
    ;
;

这里有一个使用 Mongoose 的示例:

   var mongoose = require('mongoose');
----
 mongoose.connect('localhost', 'test');
 var db = mongoose.connection;
  db.on('error', console.error.bind(console, 'connection error:'));
  db.once('open', function callback() 
   console.log('Connected to DB');
);

// User Schema
var userSchema = mongoose.Schema(
   username:  type: String, required: true, unique: true ,
   email:  type: String, required: true, unique: true ,
  password:  type: String, required: true,
);

【问题讨论】:

【参考方案1】:

它们是相同的东西做相同的连接吗?还是他们有特定的目的?

它们是不同的,尽管它们是解决相同基本问题的两种方法。 Mongoose 是一个非常复杂的全功能 ORM。更多功能,但更复杂。 Monk 的范围更小,因此更容易理解。

我的建议是直接使用基本的mongodb 驱动模块开始编码。当你了解它是如何工作的,以及它的某些部分是如何令人讨厌的时候,你就会明白monk 的好处,并且可以尝试一下,看看你是否喜欢它。我不会向初学者推荐mongoose。 Mongodb 已经足够难学了,虽然 mongoose 会有所帮助,但它的 API 非常神奇,并且假设您已经了解 mongodb 的棘手方面。

【讨论】:

我从 Mongoose 开始,没有遇到任何问题。他们的网站有优秀的文档和基本 CRUD 的示例。 我向初学者推荐和尚,理解和尚文档很容易快速【参考方案2】:

如果你正在学习 NodeJS 和 Mongo,你真的不需要任何其他东西——事实上,MongoDB 为 MongoDB 和 NodeJS 开发人员提供了免费的在线课程。不需要任何额外的包装器。

见https://university.mongodb.com/

【讨论】:

以上是关于Mongodb的僧侣vs猫鼬的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬 Mongodb

如何在猫鼬中进行原始 mongodb 操作?

如何在猫鼬中进行原始 mongodb 操作?

无法在 MongoDB(猫鼬)文档中追加数组

Mongodb - 猫鼬,通过对两个字段求和进行排序

MongoDB(猫鼬)聚合计数集合中特定 ObjectID 的实例