如何使用AND和;在JAVA mongodb数组集合中的OR条件

时间:2012-10-08 11:24:54

标签: java mongodb conditional-operator

我有以下格式的Java Mongo Collection。

{
"field1": ["f1","f2"],
"field2": ["g1","g2"],        
    "Ans": a1
} 
{
    "field1": ["f4","f5"],
    "field2": ["g5","g6"],        
        "Ans": a2
} 
{
    "field1": ["f1","f6"],
    "field2": ["g2","g3"],        
        "Ans": a3
} 

我需要分别在field1和field2中执行“OR”条件 从我需要做的结果和条件来选择行 例如:f1,f5,g2,g3是我得到的输入 我需要在f1,f5的字段1中进行或干预,所以我将获得所有三行 我需要在第2场用g,g3进行或干预,所以我会得到第1和第3行 虽然做和两个条件我只需要获得第1和第3行 Follwing是使用

的代码
        DBObject query1 = new BasicDBObject("field1","f1");  
        DBObject query2 = new BasicDBObject("field1","f5");  
        BasicDBList condtionalOperator = new BasicDBList();
        condtionalOperator.add(query1);
        condtionalOperator.add(query2);
        DBObject query = new BasicDBObject("$or", condtionalOperator);    

类似OR查询字段2和And查询其结果
  我知道它很长。任何人都知道简单的代码吗?

1 个答案:

答案 0 :(得分:0)

(我使用Mongo shell JavaScript语法进行响应,因为它比Java更简洁。等效的Java应该很容易生成。)

db.collection.find({$and:[
    {field1:{$in:["f1","f5"]}},
    {field2:{$in:["g1","g3"]}}
]});

$in运算符基本上执行OR运算,因此$and的第一个操作数基本上等于{$or:[{field1:"f1"},{field1:"f5"}]}