查询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()); } 

这将返回以下内容:

 { "_id" : { "$oid" : "4f5a4477c5e80f71ece56797"} , "Name" : "Mozammil"} 

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

  DBCursor cursor = coll.find({}, {'Name':1}); while (cursor.hasNext()) { System.out.println(cursor.next()); } 

但它没有用。 请帮助?

您可以使用光标在返回的文档上使用get来获取您要查找的字段。 喜欢这个:

 System.out.println(cursor.next().get("key")); 

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

这是一些工作代码:

 // 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()); } 

第一个查询输出:

 { "_id" : { "$oid" : "4f5a6c1603647d34f921f967"} , "Name" : "Wes" , "x" : "to have a second field"} 

第二个查询输出:

 { "Name" : "Wes"} 

看看DBCollection.find

 BasicDBObject query = new BasicDBObject(); // because you have no conditions BasicDBObject fields = new BasicDBObject("Name",1); coll.find(query, fields); 
 collection.find().projection(Projections.include("Name")) 

这工作得那么好!!!

 BasicDBObject query = new BasicDBObject(); BasicDBObject fields = new BasicDBObject(); fields.put("name", 1); DBCursor cursor = collection.find(query, fields); while (cursor.hasNext()) { System.out.println(cursor.next()); }