code: private Condition buildIdCondition(Object argument) {
           if (argument instanceof String && ObjectId.isValid((String) argument)) {
               return new Condition(ID_FIELD, new ObjectId((String) argument));
           } else if (Iterable.class.isAssignableFrom(argument.getClass())) {
               List<Object> objectIds = new ArrayList<Object>();
  
               //noinspection ConstantConditions
               for (Object argumentItem : (Iterable) argument) {
                   if (argumentItem instanceof String && ObjectId.isValid((String) argumentItem)) {
                       objectIds.add(new ObjectId((String) argumentItem));
                   } else if (argumentItem instanceof ObjectId) {
                       objectIds.add( argumentItem);
                   }
               }
  
               return new Condition(ID_FIELD, new BasicDBObject("$in", objectIds));
           } else {
               return new Condition(ID_FIELD, argument);
           }
       }
docs: Special case for 'id' queries as it maps to _id within MongoDB.