Как получить значение из mongoDB по имени ключа? - PullRequest
20 голосов
/ 23 ноября 2010

Я новичок в mongoDB.Я использую Java и MongoDB.У меня есть json, как,

[{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "AA" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"},
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}]

    [{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "AA" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"},
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}]

    [{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "BB" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"},
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}]

    [{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "BB" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"},
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}]

В коллекции все документы имеют разные HomeTown, я просто знаю имя ключа HomeTown, как мне получить значения HomeTown?

На сайте Монго я могу найти find() и findOne().

Спасибо!

Ответы [ 4 ]

31 голосов
/ 23 ноября 2010

find() достаточно.

db.CollectionName.find({},{HomeTown:1})

в Java, это будет:

BasicDBObject query = new BasicDBObject();
BasicDBObject field = new BasicDBObject();
field.put("HomeTown", 1);
DBCursor cursor = db.getCollection(collectionName).find(query,field);
while (cursor.hasNext()) {
    BasicDBObject obj = (BasicDBObject) cursor.next();
    result.add(obj.getString("HomeTown"));
}
11 голосов
/ 29 августа 2012
 db.CollectionName.find({},{HomeTown:1,PhoneNumber:0}) 

было бы неправильно, но

 db.CollectionName.find({},{HomeTown:1, _id:0}) 

было бы правильно, потому что вам нужно явно подавить _id.Просто к вашему сведению.

3 голосов
/ 06 марта 2012
Mongo m = new Mongo('localhost',27017);
DB db = m.getDB("yourDBName");
Collection coll = db.getCollection("yourCollectionName")
BasicDBObject query = new BasicDBObject();
query.put("HomeTown", 1);
DBCursor cursor = coll.find(query);
ArrayList arr = new ArrayList();
String str;
while (cursor.hasNext()) {
    str=cursor.curr().get("HomeTown").toString();
    arr.add(str);
}
1 голос
/ 02 апреля 2013
for(int value=0;value<=10;value++)
{
 DBCollection tableDetails = db.getCollection("Collection Name");
 BasicDBObject queryDetails = new BasicDBObject();
 queryDetails.put("_id", value);
 DBCursor cursorDetails =tableDetails.find(queryDetails);
 DBObject oneDetails;
 boolean Name=cursorDetails.hasNext();
 while(Name)
  { 
    oneDetails=cursorDetails.next();        
    String data=oneDetails.get("HomeTown").toString();
    System.out.println(data);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...