遇到性能瓶颈 mongoose, jugglingdb
发布于 11 年前 作者 blackgun 6987 次浏览 最后一次编辑是 8 年前

我目前的一个项目中使用mongoose,还在测试环境中显示一个文章竟然要300-400ms以上,文章列表要1000-2000ms. 远远慢于cnodejs的速度,目测慢个3-4倍左右。是我使用不当,还是mongoose本身的瓶颈呢?

为什么cnodejs没有使用mongoose呢?如果换成jugglingdb是否会好些,但jugglingdb如何实现调用sub document呢,例如 article.user (本身是ObjectId),通过population,可以得到对象,就可以访问article.user.name了。

Article Model代码:

var ArticleSchema = new Schema({
    title: {type : String, default : '', trim : true},
    body: {type : String, default : '', trim : true},
    user: {type : Schema.ObjectId, ref : 'User'},
    comments: [{
        body: { type : String, default : '' },
        user: { type : Schema.ObjectId, ref : 'User' },
        createdAt: { type : Date, default : Date.now }
    }],
    tags: {type: [] , get: getTags, set: setTags},
    image: {
        cdnUri: String,
        files: []
    },
    createdAt  : {type : Date, default : Date.now}
})


load: function (id, cb) {
    this.findOne({ _id : id },function(err,result){
        console.log('Found article id:',id);
    })
        .populate('user', 'name email username')
        .populate('comments.user')
        .exec(cb)
},



list: function (options, cb) {
    var criteria = options.criteria || {}

    this.find(criteria,function(err,result){
    })
        .populate('user', 'name username')
        .sort({'createdAt': -1}) // sort by date
        .limit(options.perPage)
        .skip(options.perPage * options.page)
        .exec(cb)
}
4 回复

cnode 就是使用的mongoose

cnode 就是使用的mongoose 还是 2.5.x 的版本…

看了下代码,是我记错了。看来性能不是问题啊,那可能是我用的mongolab的问题,还是需要什么设置?

你查询的东西太多了.另外skip和limit也有一定问题.

回到顶部