排序在mongodb中不起作用

sorting is not working in mongodb

本文关键字:不起作用 mongodb 排序      更新时间:2023-09-26

我正在努力排序查询!!当我使用mongo shell

执行相同的查询时
db.locations.find({"$and":[{"timestamp":{"$gte":1438328404766,"$lte":1438329404766}}]}).sort({"timestamp":1})

得到排序结果。但是通过代码来做,然后得到无序的结果。你能看看下面的代码并告诉我这段代码有什么问题吗?

//part of function(condition, offset, limit, sortByColumn, ordering, fields)
        logger.debug('Filter condition is '+JSON.stringify(condition));
        var instance ;
        if (fields) {
            instance = self.model.find(condition, fields);
        } else {
            instance = self.model.find(condition);
        }
        // start record from
        if (!_.isEmpty(offset)) {
            logger.debug('Offset is : '+ offset);
            instance.skip(offset);
        }
        if (sortByColumn ) {
            //default ordering is asc
            ordering = !(ordering) ? 1 : ordering;          
            instance.sort({sortByColumn: ordering});
            logger.debug('sorting with sortByColumn : '+sortByColumn+' Ordering : '+ ordering);
        }
        if (!_.isEmpty(limit)) {
            logger.debug('Limit is : '+ limit);
            instance.limit(limit);
        }
        instance.execAsync()
                .then(function(results) {
                    logger.debug('result is : ' + JSON.stringify(results));
                    return resolve(results);
                }).catch(function(error) {
                    return reject(error);
                });

在JavaScript中,您可以像这样将变量分配给对象的键:

    if (sortByColumn ) {
        //default ordering is asc
        ordering = !(ordering) ? 1 : ordering; 
        // declare an object
        var sorting = {};
        // Assign like this
        sorting[sortByColumn] = ordering;
        instance.sort(sorting);     // Use the object
        logger.debug('sorting with sortByColumn : '+sortByColumn+' Ordering : '+ ordering);
    }

所以你使用"括号"符号来分配一个变量,否则它只是被视为一个"文字"键名,因此:

var sortByColumn = "theColumnIAskedFor";
{ "sortByColumn": 1 }          // Not what I want :(

我的结果是:

var sortByColumn = "theColumnIAskedFor";
{ "theColumnIAskedFor": 1 }    // Yey! :->