对mongoDb游标进行排序

时间:2015-08-19 19:01:18

标签: node.js mongodb

我在为排序的游标找到正确的语法时遇到了困难。

它需要做的是返回一个已排序的游标,然后我可以在每个项目处理后进行迭代。

这是我的函数在没有排序的情况下完美运行,但在sort()添加后没有返回任何内容(我强烈怀疑语法问题,但似乎无法找到正确的文档):

db.collection('products').find({}).sort({rnd: 1},function(err, cursor){
    console.log(found);
    if(err){
        console.log(err);
    }
    function processItem(err, item) {
        if(err){
            console.log(err);
        }
        if(item === null) {
            console.log('cursor exhausted');
            db.close();
        }else{
            someAsyncOperation(item,function(){
                cursor.nextObject(processItem);
            });
        }
    }
    cursor.nextObject(processItem);
});

1 个答案:

答案 0 :(得分:0)

我对语法做了错误的假设。 find()返回的游标需要进行排序,然后迭代:

var cursor = db.collection('products4Scrape').find({}).sort({rnd: 1});
iterateCursor();

function iterateCursor(){
    if(err){
        console.log(err);
    }
    function processItem(err, item) {
        if(err){
            console.log(err);
        }
        if(item === null) {
            console.log('cursor exhausted');
            db.close();
        }else{
            someAsyncOperation(item,function(){
                cursor.nextObject(processItem);
            });
        }
    }
    cursor.nextObject(processItem);
}