如何使用Java驱动程序对选定字段运行查找查询

如何使用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

我正在尝试使用MongoJava驱动程序运行以下查询

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"}