0

我有以下格式的 Java Mongo 集合。

{
"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 行。
以下是我使用的代码

        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 的类似 OR 查询和查询他们的结果
我知道它很长。有人知道比这更简单的代码吗?

4

1 回答 1

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"}]}.

于 2012-10-08T19:09:17.617 回答