mongodb sql在语句中等效

时间:2015-10-16 08:17:44

标签: java 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 个答案:

答案 0 :(得分:1)

在性能方面和语义上没有区别。

两者都会导致将相同的命令发送到数据库。 Filters.in(field, values)方法只是new BasicDBObject(field, new BasicDBObject("$in", values))的替代语法。

从代码风格的角度来看,您认为哪一个更适合您的个人偏好。