2017-06-15 64 views
0

条件实现我nedded实现“如果condition'in的java我不知道该怎么做,所以给了一些建议,指出

db.test.aggregate(
     [ 
      { 
      $project: 
       { 
       data: 1, 
       result: 
        { 
        $cond: { if: { $cond: [ "$salary", 250000 ] }, then: 30, else: 20 } 
        } 
       } 
      } 
     ] 
    ) 

回答

0

只是DocumentsList小号

List<Document> pipeline = Arrays.asList(
    new Document("$project", 
    new Document("data1", 1) 
     .append("result", new Document(
     "$cond", new Document(
      "if", new Document("$eq", Arrays.asList("$salary", 250000)) 
     ) 
     .append("then", 30) 
     .append("else", 20) 
    )) 
) 
); 

序列化为:

[ 
    { "$project": { 
    "data1": 1, 
    "result": { 
     "$cond": { 
     "if": { "$eq": [ "$salary", 250000 ] }, 
     "then": 30, 
     "else": 20 
     } 
    } 
    }} 
] 

或者交替采用t的$cond他 “列表” 的形式:

List<Document> pipeline = Arrays.asList(
    new Document("$project", 
    new Document("data1", 1) 
     .append("result", new Document(
     "$cond", Arrays.asList(
      new Document("$eq", Arrays.asList("$salary", 250000)), 
      30, 
      20 
     ) 
    )) 
) 
); 

序列化为:

[ 
    { "$project": { 
    "data1": 1, 
    "result": { 
     "$cond": [ 
     { "$eq": [ "$salary", 250000 ] }, 
     30, 
     20 
     } 
    } 
    }} 
] 

两者都是$cond有效的用法。

还注意到你的问题中的错误,你可能意味着$eq或你可能意味着$gt或其他逻辑运算符的条件。 $cond预计它是“如果”返回一个布尔值。

根据不同的驱动程序,您可以改为Document而不是BasicDBObject