2015-10-16 48 views
1

我發現了兩種在MongoDB中聲明等價的SQL的方法。 一種方法是這樣的:在聲明中相當於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))的替代語法。

從代碼風格的角度來看,您認爲哪一個更適合您的個人偏好。