【问题标题】:restheart 2 - Aggregation errorrestheart 2 - 聚合错误
【发布时间】:2016-10-04 15:34:25
【问题描述】:

我们有一个聚合操作在 restheart 1.1.0 中有效,但现在在 2.0.2 中无效。我们一直在聚合操作中使用变量来处理动态代码生成。下面是一个简单的例子。这个问题有解决办法吗?

这里是聚合操作:

 {
      "type" : "pipeline", 
      "uri" : "agg_companies", 
      "stages" : [
          {
              "_$match" : {
                  "_$var" : "filter_query"
              }
          }, 
          {
              "_$group" : {
                  "_id" : "$organization._id", 
                  "name" : {
                      "_$first" : "$organization.name"
                  }
              }
          }, 
          {
              "_$sort" : {
                  "name" : NumberInt(1)
              }
          }
      ]
  }

我正在使用以下节点向聚合发出请求:

这行得通:

var avars = {filter_query: {travelerLastName: "Brewer"}};

这失败了:

var avars = {filter_query: {travelerLastName: {$and: ["Brewer"]}}};

错误:

{ "_links" : { "self" : { "href" : "/foresiteamo/flight/_aggrs/agg_companies2"}} , "http status code" : 400 , "http status description" : "Bad Request" , "message" : "illegal avars paramenter: {\'filter_query\':{\'travelerLastName\':{\'$and\':[\'Brewer\']}}}" , "_embedded" : { "rh:exception" : [ { "exception" : "java.lang.SecurityException" , "exception message" : "aggregation variables cannot include operators"}]}}

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework mongodb-aggregation restheart


    【解决方案1】:

    RESTHeart 不允许 avar 包含运算符(任何以 $ 开头的键)。

    这是为了避免客户端将逻辑注入聚合并最终对其进行修改。

    考虑一下可能用于窥探受限数据的 $lookup 运算符...

    【讨论】:

      猜你喜欢
      • 2017-10-18
      • 2016-01-19
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多