带有AND和OR的Java / Groovy monogodb嵌套查询

时间:2015-09-17 17:41:49

标签: java mongodb groovy

我很难将以下嵌套的mongodb查询与$and$or转换为java / groovy

db.personSync.find({
           $and:[
                {$or:[
                     { "name" : { "$regex" : "(?i)^test1" , "$options" : "i"}},
                     { "name" : { "$regex" : "(?i)^dev" , "$options" : "i"}}                                             
                ]},
                { "email" : { "$regex" : "(?i)^test" , "$options" : "i"}}
            ]}
);  
            ]}
);          

我能够为$或部分编写代码,如下所示

def mongoCritera = new ArrayList<BasicDBObject>(); 
mongoCritera.add('name', java.util.regex.Pattern.compile('(?i)^test1`'))
mongoCritera.add('name', java.util.regex.Pattern.compile('(?i)^dev`'))
def query = new BasicDBObject("\$or", mongoCritera);
collection.find(query);

但是我无法容纳$和逻辑,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

根据我的理解,你想编写一个查询提取 name应该从(test1或dev)开始不区分大小写,电子邮件从test开始(也不区分大小写)?如果是的话试试这个

db.personSync.find({$和:[{名称:{&#34; $正则表达式&#34;:&#34; ^ [测试| dev的]&#34;&#34; $选项&# 34;:&#34;我&#34;}},{电子邮件:{&#34; $正则表达式&#34;:&#34; ^测试1&#34;&#34; $选择&#34;:&# 34; I&#34;}}]})

答案 1 :(得分:0)

hdfs dfs -put <FILE_IN_VM_FS> <FILE_IN_HDFS>

答案 2 :(得分:0)

System.out.println("Enter " + regular + " for regular service...");
char service = /* ... Whatever ... */ ;
if (service == regular) {
  // ... Whatever.
}