【问题标题】:How to use AND & OR condition in JAVA mongo db array collection如何在 JAVA mongo db 数组集合中使用 AND & OR 条件
【发布时间】:2012-09-28 15:31:24
【问题描述】:

我有以下格式的 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 是我得到的输入。
我需要在字段 1 中使用 f1、f5 执行或操作,所以我将获得所有三行
我需要在字段 2 中使用 g、g3 执行或操作,因此我将获得第 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 查询并查询其结果
我知道它很长。有人知道比这更简单的代码吗?

【问题讨论】:

    标签: java mongodb conditional-operator


    【解决方案1】:

    (我使用 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"}]}

    【讨论】:

      猜你喜欢
      • 2014-11-23
      • 2012-11-03
      • 2023-03-27
      • 2012-06-04
      • 2013-03-29
      • 2016-10-30
      • 2019-05-17
      • 2017-04-02
      • 2012-05-06
      相关资源
      最近更新 更多