Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用及;JAVA mongo db数组集合中的OR条件_Java_Mongodb_Conditional Operator - Fatal编程技术网

如何使用及;JAVA mongo db数组集合中的OR条件

如何使用及;JAVA mongo db数组集合中的OR条件,java,mongodb,conditional-operator,Java,Mongodb,Conditional Operator,我有以下格式的JavaMongo集合 { "field1": ["f1","f2"], "field2": ["g1","g2"], "Ans": a1 } { "field1": ["f4","f5"], "field2": ["g5","g6"], "Ans": a2 } { "field1": ["f1","f6"], "field2": ["g2","g3"], "

我有以下格式的JavaMongo集合

{
"field1": ["f1","f2"],
"field2": ["g1","g2"],        
    "Ans": a1
} 
{
    "field1": ["f4","f5"],
    "field2": ["g5","g6"],        
        "Ans": a2
} 
{
    "field1": ["f1","f6"],
    "field2": ["g2","g3"],        
        "Ans": a3
} 
我需要分别在字段1和字段2中执行“或”条件
从结果中,我需要执行和条件选择行。
例如:f1、f5、g2、g3是我得到的输入。
我需要在字段1中使用f1、f5执行or条件,以便获得所有三行
我需要用g,g3在字段2中执行or条件,这样我将得到第一行和第三行
在执行这两项操作时,我只需要获得第1行和第3行。
下面是我使用的代码

        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);    
字段2的相似或查询及其结果的相似或查询
我知道它很长。有人知道比这更简单的代码吗?

(我使用Mongo shell JavaScript语法进行响应,因为它比Java要简单一些。等效的Java应该可以直接生成。)

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

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