如何使用$或mongo db聚合

时间:2016-03-15 07:56:34

标签: php mongodb laravel aggregation-framework

我正在使用汇总管道与$match$project$geonear管道运营商。

在每个集合中,我都有工作日,如:

  1. repeat_every_monday =true

  2. repeat_every_tuesday=true

  3. 所有工作日的序列相同。

    现在,如果今天是星期二,那么我必须在我的管道运算符中添加$or条件,以便使用之前的数据获取所有记录,这些数据标记为repeat_every_tuesday=true

    我想表达像

    这样的条件操作
    if (name=="pankaj" and "test"=="false" || "test"==true) 
    

    这是我到目前为止所做的:

    db.test.aggregate([
         {'$match':{"name":"pankaj","test":false,}},
         {'$project':{_id:1‌​,name:1,test:1,sir:1}}
    ]).pretty() 
    

    我必须放$or

    I have test collection and data is as below:
         db.test.find().pretty()
    {
        "_id" : ObjectId("56e79492f286d94702cf4e31"),
        "name" : "pankaj",
        "test" : true,
        "sir" : "cheema"
    }
    {
        "_id" : ObjectId("56e7abb3f286d94702cf4e32"),
        "name" : "pankaj",
        "test" : false,
        "sir" : "cheema"
    }
    
    
    I want a aggregate query with $match which should  give me result where     name is =pankaj and test is either true or false .
        For example in sql :
        Select * from test where name=pankaj or test=false or test =true.
    

1 个答案:

答案 0 :(得分:0)

像这样使用

db.articles.aggregate( [
  { $match: { $or: [ {"$and":["name":"pankaj","test":"false"]}, 
  {"test":"true"}]}},

] );