将SQL查询转换为MongoDB聚合,其中something =“this”或者=“that”

时间:2016-09-14 07:15:22

标签: mongodb mongodb-query aggregation-framework

查询:

Select * from table1 where f1 = "val1" OR f1 = "val2"

我需要将此查询转换为MongoDB查询,但使用聚合找不到。

2 个答案:

答案 0 :(得分:2)

查看$match$in$or
您的查询可能如下所示

db.table1.aggregate( [
  { $match: { f1: { $in: ['val1', 'val2'] } } }
] );

答案 1 :(得分:2)

您不一定需要聚合框架,使用 $in {{进行简单的 find() 查询3}} 运算符会很好:

db.collection.find({
    "f1": { "$in": ["val1", "val2"] }
})

使用 $or 运算符:

db.collection.find({
    "$or": [
        { "f1": "val1" },
        { "f1": "val2" }
    ]
})

这只是上述 $or

的合成糖

对于聚合管道方法,您可以运行以下管道,该管道使用 $in 运算符进行查询:

db.collection.aggregate([
    { "$match": { "f1": { "$in": ["val1", "val2"] } } }
])

或使用$或运算符

db.collection.aggregate([
    { 
        "$match": { 
           "$or": [
               { "f1": "val1" }, 
               { "f1": "val2" }
           ] 
        } 
    } 
])

从文档 $match ,建议

  

$or vs $in <expressions>一起使用时,等同性检查   相同字段的值,使用 $or 运算符代替 $in   操作