mongodb - 在 mongoDB 中编写复杂查询

标签 mongodb

我想使用以下字段在 mongodb 中编写复杂的查询:

  • 评分
  • 小时

查询应该根据以下条件返回结果集:

1) class = "a"&& rate > "20000"

2) class = "b"&& (rate X hrs X 52) > "20000"

我试图查询的集合中的记录看起来像这样:

{
    "_id": "3434sfsf",
    "rate": "60",
    "class": "a"
},
{
    "_id": "sdsdsd",
    "rate": "60",
    "class": "b",
    "hrs": "8"
}

我如何编写查询来实现我正在寻找的东西......谢谢!

最佳答案

请尝试以下查询:

第 1 步:我们仅过滤那些具有“class”:“a”或“class”:“b”和“hrs”键存在的文档。

第 2 步:我们将“rate”、“hrs”与 52 相乘并将结果存储在键“rateMultiply

第 3 步:我们根据以下标准过滤文档:class = "a"&& rate > "20000"OR class = "b"&& (rate X 小时 X 52) > "20000"

第 4 步:我们正在显示仅包含我们需要的字段的文档网。

让我们创建一个集合“exp4”并插入以下文档:

db.exp4.insert({ "_id" : "3434sfsf", "rate" : 60, "class" : "a" });
db.exp4.insert({ "_id" : "sdsdsd", "rate" : 60, "class" : "b", "hrs" : 8 });
db.exp4.insert({ "_id" : "123", "rate" : 30000, "class" : "a", "hrs" : 8 });
db.exp4.insert({ "_id" : "12567", "rate" : 12000, "class" : "b" });

现在让我们查询集合:

db.exp4.aggregate([
     { $match: 
       {$or : [ {"class" : "a"},
                {$and : [{"class":"b"},{"hrs": {"$exists" : 1}}]}
              ]
       }
     },
     { $project : 
        { rateMultiply : { $multiply: ["$rate","$hrs",52]}, 
         rate:1, class:1, hrs : 1 
        } 
     },
     { $match : 
       {$or : [ 
                { $and : [ {"class" : "a"} , 
                           {"rate" : {"$gt" : 20000}} 
                         ] 
                } , 
                { $and : [ {"class" : "b"}, 
                           {rateMultiply: {$gt:20000}}
                         ]
                 } 
               ] 
       }
     },
     { $project: {class : 1 , rate : 1 , hrs : 1 }
     }
  ])

结果:

{ "_id" : "sdsdsd", "rate" : 60, "class" : "b", "hrs" : 8 }
{ "_id" : "123", "rate" : 30000, "class" : "a", "hrs" : 8 }

关于mongodb - 在 mongoDB 中编写复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816342/

相关文章:

MongoDB 有一个整数总是正数

javascript - 如何动态地将API数据传递到MongoDB数据库

javascript - 在 JavaScript 中使用 if 语句构建选择器

java - 使用 MongoDB 进行距离计算

Mongodb导入导出为csv

javascript - 向 Mongo 发送并行请求,并在所有请求完成后继续

json - nginx日志解析工具

mongodb - mongod.service 启动失败 : Unit mongod. 找不到服务

mongodb - 如何让meteor.com应用程序使用外部mongo db

python - mongodb查询构建where子句的问题