【问题标题】:How to sort a query result by the result of a function in mongoDB如何根据mongoDB中函数的结果对查询结果进行排序
【发布时间】:2013-12-20 18:45:57
【问题描述】:

如何根据 mongoDB 中函数的结果对查询结果进行排序?在 SQL 中,我有以下代码:

select field1, 
       field2,
       myFunction(field1, 0)
from   myTable
where  field4 = 5
order  by 3

【问题讨论】:

  • order by 3 你能解释一下 3 的原因吗
  • 通过返回 myFunction 来排序结果
  • 目前这在 MongoDB 本身内是不可能的
  • 目前还不清楚您到底要做什么。如果您提供更清晰的说明会很有帮助。你的函数会做什么?聚合框架可能会成功。否则,您可以通过 JavaScript 或您的应用程序使用的任何语言进行查找并处理排序。
  • @EmptyArsenal myFunction 使用字段参数的值进行计算并为每一行返回一个数值,我需要按此结果排序。

标签: mongodb mapreduce aggregation-framework


【解决方案1】:

我创建了下面的函数(在 mongodb 中),就像我的 sql 查询的替代方法一样。可能不理想,但解决了我的问题:

function() {
  var list = Array();
  // myColletion is myTable equivalent
  db.myCollection.find({ field4: 5}).forEach(
    function (vet) {
      list.push([  vet.field1,
                   vet.field2,
                   myFunction(vet.field1, 0)])
    }
  );
  list.sort(function(a,b){return ((a[1] < b[1]) ? -1 : ((a[1] > b[1]) ? 1 : 0));});
  return list;
}

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 2013-09-30
    • 2017-05-09
    • 2015-04-27
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多