gpt4 book ai didi

javascript - 排序在 mongodb 中不起作用

转载 作者:行者123 更新时间:2023-12-03 09:24:09 24 4
gpt4 key购买 nike

我正在努力处理排序查询!当我使用 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! :->

关于javascript - 排序在 mongodb 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31743258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com