查询MongoDB集合中的字段.

7 java mongodb

我试图查询mongodb集合中的特定字段.这是我的代码和输出:

    Mongo m = new Mongo();
    DB db = m.getDB( "mydb" );
    DBCollection coll = db.getCollection("student") ;


    // adding data 
    BasicDBObject moz = new BasicDBObject();
    moz.put("Name", "Mozammil");
    coll.insert(moz);



    DBCursor cursor = coll.find();


    while (cursor.hasNext()) {
        System.out.println(cursor.next());

    }
Run Code Online (Sandbox Code Playgroud)

这将返回以下内容:

{ "_id" : { "$oid" : "4f5a4477c5e80f71ece56797"} , "Name" : "Mozammil"}
Run Code Online (Sandbox Code Playgroud)

但是,我只想要名称部分.谷歌搜索,这应该做的工作.

    DBCursor cursor = coll.find({}, {'Name':1});


    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }
Run Code Online (Sandbox Code Playgroud)

但它没有用.请帮忙?

Sid*_*Sid 9

您可以使用光标在返回的文档上使用get来获取您要查找的字段.像这样:

System.out.println(cursor.next().get("key"));
Run Code Online (Sandbox Code Playgroud)


Eve*_*man 9

我知道你已经接受了答案,但这并不是你要求的.

这是一些工作代码:

// get Mongo set up...
Mongo m = new Mongo();
DB db = m.getDB( "test" );
DBCollection coll = db.getCollection("test");

// insert a test record
coll.insert(new BasicDBObject("Name","Wes").append("x", "to have a second field"));

// create an empty query
BasicDBObject query = new BasicDBObject(); 
// configure fields to be returned (true/1 or false/0 will work)
// YOU MUST EXPLICITLY CONFIGURE _id TO NOT SHOW
BasicDBObject fields = new BasicDBObject("Name",true).append("_id",false);

// do a query without specifying fields (and print results)
DBCursor curs = coll.find(query);
while(curs.hasNext()) {
   DBObject o = curs.next();
   System.out.println(o.toString());
}

// do a query specifying the fields (and print results)
curs = coll.find(query, fields);
while(curs.hasNext()) {
   DBObject o = curs.next();
   System.out.println(o.toString());
}
Run Code Online (Sandbox Code Playgroud)

第一个查询输出:

{ "_id" : { "$oid" : "4f5a6c1603647d34f921f967"} , "Name" : "Wes" , "x" : "to have a second field"}
Run Code Online (Sandbox Code Playgroud)

第二个查询输出:

{ "Name" : "Wes"}
Run Code Online (Sandbox Code Playgroud)


Ste*_* B. 6

看看DBCollection.find

BasicDBObject query = new BasicDBObject(); // because you have no conditions
BasicDBObject fields = new BasicDBObject("Name",1);
coll.find(query, fields);
Run Code Online (Sandbox Code Playgroud)