这是我的查询,它尝试根据名为expiresAt
的派生字段对MongoDB文档数组进行排序。 expiresAt
是一个Date对象,表示存储在doc.expirationDate
中的日期字符串。
失败并显示错误TypeError: ... .sort({}) is not a function (shell):5
db.tokens.find().map(function(doc) {
var expiryDate = new Date(doc.credentialsMap.linkedin.expirationDate);
doc.expiresAt = expiryDate;
return doc;
}).sort({'expiresAt': -1});
答案 0 :(得分:1)
cursor.map()
返回一个Java脚本数组。
您调用sort()
的方式假定返回值是MongoDB
游标,这就是失败的原因。
您必须使用常规Array.sort
语法。
例如,要使地图结果按降序排序,请使用以下命令:
db.tokens.find().map(function(doc) {
var expiryDate = new Date(doc.credentialsMap.linkedin.expirationDate);
doc.expiresAt = expiryDate;
return doc;
}).sort(function(a,b) { return b.expiresAt - a.expiresAt});