繁体   English   中英

如何在JAVA Mongo DB数组集合中使用AND&OR条件

[英]How to use AND & OR condition in JAVA mongo db array collection

我有以下格式的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是我得到的输入。
我需要在字段1中使用f1,f5做或处理,所以我将获得所有三行
我需要在g,g3的字段2中进行操作或处理,所以我将获得第一行和第三行
同时做和两个条件我只需要获得第一和第三行。
我正在使用以下代码

        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查询其结果
我知道它很长。 谁能比这知道简单的代码?

(我使用Mongo shell JavaScript语法进行响应,因为它比Java冗长一些。等效的Java应该易于生成。)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM