首页 > 解决方案 > Mongodb失败并出现错误无法优化表达式?

问题描述

我有一个如下查询,它总是返回错误:

Error: error: {
    "ok" : 0,
    "errmsg" : "Failed to optimize expression :: caused by :: Failed to optimize expression :: caused by :: Failed to optimize expression :: caused by :: Incorrect number of non-equivalent expressions",
    "code" : 3401204,
    "codeName" : "Location3401204",
    "$clusterTime" : {
        "clusterTime" : Timestamp(1631084334, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    },
    "operationTime" : Timestamp(1631084334, 1)
}

如果我删除 $and.$ 中的某些条件,或者它可以工作。请查看我的查询以及如何修复它的错误。我有一个嵌套的 $and 和 $or 因为如果需要还有一些条件。万一没必要。所以我想保留这种查询格式

提前致谢

询问:

db.getCollection('test').find({
   "p":ObjectId("609100a56ed9f8001351aee3"),
   "$and":[
      {
         "$or":[
            {
               "a":"1"
            },
            {
               "a":"2"
            },
            {
               "a":"3"
            },
            {
               "a":"4"
            },
            {
               "a":"5"
            },
            {
               "a":"6"
            },
            {
               "a":"7"
            },
            {
               "a":"8"
            },
            {
               "a":"9"
            },
            {
               "a":"10"
            },
            {
               "a":"11"
            },
            {
               "a":"12"
            },
            {
               "a":"13"
            },
            {
               "a":"14"
            },
            {
               "a":"15"
            },
            {
               "a":"16"
            },
            {
               "a":"17"
            },
            {
               "a":"18"
            },
            {
               "a":"19"
            },
            {
               "a":"20"
            },
            {
               "a":{
                  "$regex":"/^(1|2).*/i"
               }
            },
            {
               "a":{
                  "$regex":"/^3.*/i"
               }
            },
            {
               "a":{
                  "$regex":"/^4.*/i"
               }
            },
            {
               "a":{
                  "$regex":"/^5.*/i"
               }
            },
            {
               "a":{
                  "$regex":"/^6.*/i"
               }
            },
            {
               "a":{
                  "$regex":"/^7.*/i"
               }
            },
            {
               "a":{
                  "$regex":"/^8.*/i"
               }
            }
         ]
      }
   ],
   "$or":[
      {
         "$or":[
            {
               "_id":ObjectId("5ca45ca25f6c44001004609a")
            },
            {
               "_id":ObjectId("5ca45ca25f6c44001004609a")
            }
         ]
      }
   ]
}).sort({ name: 1 }).collation({ locale: 'en_US'})

标签: mongodb

解决方案


推荐阅读