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