如何使用Java驱动程序对选定字段运行查找查询
我正在尝试使用MongoJava驱动程序运行以下查询如何使用Java驱动程序对选定字段运行查找查询,java,mongodb,Java,Mongodb,我正在尝试使用MongoJava驱动程序运行以下查询 db.myCollection.find({},{_id:1}) 我需要集合中的所有ID。 上述查询在mongo客户端中运行良好 但是,我需要通过java代码获得结果。 我尝试了以下非工作代码。。因为,正如你在下面看到的,我无法创建 {},{u id:1}用于从java驱动程序中查找方法 BasicDBObject query= new BasicDBObject("","").append("",new BasicDBObject("_i
db.myCollection.find({},{_id:1})
我需要集合中的所有ID。
上述查询在mongo客户端中运行良好
但是,我需要通过java代码获得结果。
我尝试了以下非工作代码。。因为,正如你在下面看到的,我无法创建
{},{u id:1}用于从java驱动程序中查找方法
BasicDBObject query= new BasicDBObject("","").append("",new BasicDBObject("_id","1"));
DBCursor cursor = coll.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
请建议初始化查询对象的适当方法
编辑:
我始终可以通过以下方式获取ID:
DBCursor cursor = coll.find();
try {
while(cursor.hasNext()) {
System.out.println(cursor.next().get("_id"));
}
} finally {
cursor.close();
}
但是,学习如何创建准确的查询对象会更好,也许在我的+30gb的大数据集上会更快。因此,我保留这个问题。将查询条件和所选字段对象作为单独的参数来查找:
将查询条件和选定字段对象保留为单独的参数以查找:
可以从集合中投影字段,如下所示
// Create query and fields
BasicDBObject query = new BasicDBObject();
BasicDBObject fields = new BasicDBObject();
// Assign 1 or 0 for projecting a specific field.
fields.put("_id", 0);
fields.put("Student ID", 1);
fields.put("Student Age", 1);
fields.put("Gender", 1);
// Pass query and fields to find()
DBCursor cursor = dbCollection.find(query, fields);
可以从集合中投影字段,如下所示
// Create query and fields
BasicDBObject query = new BasicDBObject();
BasicDBObject fields = new BasicDBObject();
// Assign 1 or 0 for projecting a specific field.
fields.put("_id", 0);
fields.put("Student ID", 1);
fields.put("Student Age", 1);
fields.put("Gender", 1);
// Pass query and fields to find()
DBCursor cursor = dbCollection.find(query, fields);
欢迎@Arun,你能修改一下代码格式,再解释一下你的答案吗?:。。。特别是在这个例子中,查询和游标没有任何意义-现在它是一个完整的答案。这个问题讨论了你在3.1和更高版本中必须做的事情:welcome@Arun,你能修复代码格式,并进一步解释你的答案吗?:。。。特别是在本例中,查询和游标没有任何意义-现在它是一个完整的答案。这个问题讨论了在3.1及更高版本中必须执行的操作:在mongodb 3.0驱动程序api中,findBasicDbObject、BasicDBObject方法不再存在。添加了投影方法,可用于返回字段子集,在3.0+版本中。对于搭载@yashgarg1232,请参阅此了解最新的3.0+版本。在mongodb 3.0驱动程序api中,findBasicDbObject,BasicDBObject方法不再存在。在3.0+版本中,添加了投影方法,可用于返回字段子集。对于搭载@yashgarg1232,请参阅此了解最新的3.0+版本。对于mongodb 3.1,您可以使用Seb对此问题的回答:对于MongoDB 3.1,您可以使用Seb对此问题的回答:
Below snippet gets all documents where “firstName” is “Gopi”.
<pre>
BasicDBObject query = new BasicDBObject();
query.put("firstName", "Gopi");
DBCursor cursor = collection.find(query);
import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
import com.mongodb.MongoClient;
import com.mongodb.DB;
import com.mongodb.DBCollection;
public class FindDocument {
/* Step 1 : get mongoClient */
public static MongoClient getMongoClient(){
MongoClient mongoClient = null;
try {
mongoClient = new MongoClient( "localhost" , 27017 );
} catch (UnknownHostException e) {
e.printStackTrace();
}
return mongoClient;
}
public static void main(String args[]){
MongoClient mongoClient = getMongoClient();
/* Step 2: Connect to DB */
DB db = mongoClient.getDB("sample");
/*Step 3 : Get collection */
DBCollection collection = db.getCollection("employee");
/* Step 4 : Create Query object */
BasicDBObject query = new BasicDBObject();
query.put("firstName", "Gopi");
/* Step 5 : Get all documents */
DBCursor cursor = collection.find(query);
/* Step 6 : Print all documents */
while(cursor.hasNext()){
System.out.println(cursor.next());
}
}
}
</pre>
Output
{ "_id" : 3.0 , "firstName" : "Gopi" , "lastName" : "Battu"}