Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-914

$in query with $regex doesn't work

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      I am trying to write $in query with $regex in mongo+java. It's not working in mongo shell either. What I mean is I don't get any results but no query parse error either. Here's the final query I got from Java Debugger at the line where I say collection.find(finalQuery)

      { "$and" : [ 
              { "$or" : 
                      [ { "country" : "united states"}]} , 
              { "businesses" : 
                      { "$in" : [ { "$regex" : "^.*cardinal.*health.*$"} , { "$regex" :      "^.*the.*hartford.*$"}]}
               }
              ]
      }
      

      Java Code snipet for Above query: Set businesses = new HashSet();

      for(String st: srchTerms){
          businesses.add(Pattern.compile("^"+st.trim()+"$"));
      }
      srchTermQuery.append("businesses", new BasicDBObject("$in", businesses ));
      

      However, following query works in mongo shell but I don't know how to write it into java:

      {"registering_organization" : {"$in":[/^.*cardinal.*health.*$/,/^.*the.*hartford.*$/]}}

      Java Code add double quotes around regex if we try to define it as a string.

      For workaround, I can do as someone suggested on StackOverflow using Or in my regex.
      Pattern pattern = Pattern.compile("(^aaa$)|(^bbb$)");
      srchTermQuery.append("businesses", pattern);

      http://stackoverflow.com/questions/17984750/mongodb-java-in-query-with-regex

            Assignee:
            trisha.gee@10gen.com Trisha Gee
            Reporter:
            niravpatel44 nirav
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: