mongodb - 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'})
解决方案
推荐阅读
- vmware - Rancher 2.1 和 Vmware 存储类
- python - 使用 pymodm 连接 MongoDB 服务器的 Python 脚本中的身份验证失败错误
- javascript - 如何在数组[]中显示对象
- arrays - 最小化 (A[i]*B[i]) 的最大值
- sql-server - SQL:遍历文件夹并发送带有附件和存档文件的电子邮件。执行 sp_send_dbmail
- python - AttributeError:“NoneType”对象没有属性“通道”
- laravel - Laravel 身份验证中间件
- r - 如何在 R 中以有组织的方式读取 csv 列
- wordpress - 如何从插件和其他来源捆绑 WordPress JS 和 CSS 文件
- javascript - 为什么我不能在 numbro.js 中设置语言?