2015-10-16 2 views
1

Я нашел два способа сделать эквивалент SQL в выражении в mongodb. Одним из способов было бы что-то вроде:mongodb sql в эквиваленте выписки

BasicDBObject inQuery = new BasicDBObject(); 
List<Integer> list = new ArrayList<Integer>(); 
list.add(2); 
list.add(4); 
list.add(5); 
inQuery.put("employeeId", new BasicDBObject("$in", list)); 
DBCursor cursor = collection.find(inQuery); 

, а другой, с фильтром, будет что-то вроде этого:

FindIterable<Document> iterable = db.getCollection("coll_name") 
      .find(in("field_name", values)) 

Мои вопросы:

  • Какой путь лучше?
  • Лучше ли использовать фильтры? Что относительно производительности между выполнением запроса является первым способом против использования фильтра?

ответ

1

Производительность и семантически нет разницы.

Оба результата приводят к тому, что одна и та же команда отправляется в базу данных. Метод Filters.in(field, values) является просто альтернативным синтаксисом для new BasicDBObject(field, new BasicDBObject("$in", values)).

Какой из них вы считаете более понятным с точки зрения кода, является вашим личным предпочтением.

Смежные вопросы