2010-11-23 28 views
19

Soy nuevo en mongoDB. Estoy usando java y mongoDB. Tengo un JSON,¿Cómo recuperar un valor de mongoDB, por su nombre de clave?

[{ "_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"}}] 

En una colección de todos los doc tienen diferentes HomeTown, sólo sé el nombre de clave HomeTown, ¿Cómo puedo obtener los valores de HomeTown?

En el sitio de mongo, solo puedo encontrar find() y findOne().

Gracias!

Respuesta

30

find() es suficiente.

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

en Java, sería:

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")); 
} 
+1

@Ron: Gracias por su apoyo. Tengo una pregunta, ¿Cuál es el significado de '1' en field.put (" HomeTown ", 1); –

+0

@The Elite Gentleman: ¿Cuál es el significado de 1 en field.put ("HomeTown", 1); –

+0

@CS 1.6, significa que Mongo encontrará un campo 'HomeTown' con ** value ** is' 1'. Puedo estar equivocado, pero no he tratado con Mongo. El '1' también podría significar, límite (como en SQL). –

3
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); 
} 
11
db.CollectionName.find({},{HomeTown:1,PhoneNumber:0}) 

sería un error, pero

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

sería correcto, porque hay que suprimir _id explícitamente . Solo para tu información.

1
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); 
    } 
} 
+0

¿quisiste decir 'boolean Name = cursorDetails.hasNext(); while (Nombre) 'as' while (cursorDetails.hasNext()) '?! –

Cuestiones relacionadas