猫鼬聚合动态排序



我想按示例 avgTemperature 或 avgNoise 动态排序,但我无法var sort = 'avgTemperature';并在聚合中获取它。有人有提示吗?

这是静态聚合代码,它仅按 avgTemperature 排序。但我想动态改变。

 Measurement.aggregate([{
      $group: {
        _id: "$workplace",
        avgTemperature: {
          $avg: "$temperature"
        },
        avgNoise: {
          $avg: "$noise"
        }
      }
    }, {
      $sort: {
        avgTemperature: 1
      }
    }]);

考虑从动态查询创建一个文档(或 JS 对象)来表示$sort运算符表达式。您可以使用方括号表示法来构造它。

举个例子:

var sortOperator = { "$sort": { } },
    groupOperator = {
        "$group": {
            "_id": "$workplace",
            "avgTemperature": { "$avg": "$temperature" },
            "avgNoise": { "$avg": "$noise" }
        }
    },
    sort = "avgTemperature"; // <-- dynamic query
sortOperator["$sort"][sort] = 1; // <-- create sort operator using bracket notation
Measurement.aggregate([ groupOperator, sortOperator ])
           .exec(callback);

相关内容

  • 没有找到相关文章

最新更新