查询结果达到500+后,带有填充的Mongoose查找查询在Azure MongoDB上返回错误

时间:2018-07-30 11:00:15

标签: node.js mongodb azure mongoose

我对MongoDB,Mongoose和Azure Environment还是很陌生。我在使用正常的特定查询时遇到了麻烦。但是,在预期查询结果为500+之后,它将生成错误。结果是累积的报告,最多可包含1200条记录。结果是从2个具有总体的集合中得出的。以下是我的node.js / express api函数,它会生成结果。

index: (req, res, next) => {
    Store.find({isChecked: true}).batchSize(1200)
    .populate('lastCheckResult').exec(function (err, stores) {
      if (err) {
        console.log(err);
        return next(err);
      }
      else {
        res.locals.stores = stores;
        return next();
      }
    });
  },

以下是Azure Web应用程序(node.js)中的错误。

  

“消息:{”错误“:[{”严重性“:”错误“,”位置“:{”开始“:0,”结束“:75279},”代码“:” SC3004“,”消息“ :“ SQL查询超出了'OR'运算符的最大数量。允许的限制为500。“}]} ActivityId:96ebe198-0000-0000-0000-0000-000000000000,请求URI:/ apps / 32fe74cb-f1dd-4433-bfbf-ba15991cdee1 / services / d914c6a9-eb86-43d8-9108-4ee395d25345 / partitions / aa7a586e-7f30-4a02-99e4-8a21d2dc8295 / replicas / 131759772120608879s,RequestStats:ResponseTime:2018-07-30T10:54:11.9018240Z,StoreReadResult:StorePhysicalAddress:rrnbd://10.0.0.48:14000 / apps / 32fe74cb-f1dd -4433-bfbf-ba15991cdee1 / services / d914c6a9-eb86-43d8-9108-4ee395d25345 / partitions / aa7a586e-7f30-4a02-99e4-8a21d2dc8295 / replicas / 131759772120608879s,LSN:2965,GlobalCommittedRsN:2964,PartId:Key,Val: ,StatusCode:0,IsGone:False,IsNotFound:False,IsInvalidPartition:False,RequestCharge:1,ItemLSN:-1,ResourceType:文档,OperationType:Query,SDK:Microsoft.Azure.Documents.Common / 2.0.0.0“

有人帮助我解决或解决此类问题吗?

1 个答案:

答案 0 :(得分:1)

  

SQL查询超出了“ OR”运算符的最大数量。的   允许的上限为500。

基于您的错误日志,我假设您正在使用Cosmos DB Mongo API。实际上,CosmosDB是独立的服务器实现,无法直接与MongoDB服务器版本和功能保持一致。

CosmosDB支持MongoDB API的子集,并将请求转换为CosmosDB SQL等效项。 CosmosDB有一些不同的行为和结果。但是CosmosDB有责任改进他们对MongoDB的仿真。

我建议您可以拆分每批查询数据的数量,以暂时避免此限制。我还搜索了与限制有关的类似案例:The SQL query text exceeded the maximum limit of 30720 characters in Azure CosmosDB

当然,您可以添加反馈here以获得官方帮助,或者,如果需要完整的MongoDB功能支持,可以考虑在Azure上使用MongoDB Atlas

希望它对您有帮助。