首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >restheart 2-聚合错误

restheart 2-聚合错误
EN

Stack Overflow用户
提问于 2016-10-04 15:34:25
回答 1查看 198关注 0票数 1

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

以下是聚合操作:

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

我使用以下节点向聚合提出请求:

这样做是可行的:

代码语言:javascript
复制
var avars = {filter_query: {travelerLastName: "Brewer"}};

这是失败的:

代码语言:javascript
复制
var avars = {filter_query: {travelerLastName: {$and: ["Brewer"]}}};

错误:

代码语言:javascript
复制
{ "_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"}]}}
EN

回答 1

Stack Overflow用户

发布于 2016-10-05 17:07:55

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

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

想想$lookup操作符,它可能用来窥探受限制的数据.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39856402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档