2010-11-23 6 views
19

Je suis nouveau sur mongoDB. J'utilise java et mongoDB. J'ai un JSON comme,Comment récupérer une valeur de mongoDB, par son nom de clé?

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

Dans une collection ont tous de doc différents HomeTown, je sais juste le nom de la clé HomeTown, comment puis-je obtenir les HomeTown valeurs?

Dans le site de mongo, je peux juste trouver find() et findOne().

Merci!

Répondre

30

find() est suffisant.

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

en Java, ce serait:

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: Merci pour votre soutien. J'ai une question, Quelle est la signification de '1' dans field.put (" HomeTown ", 1); –

+0

@The Gentleman Elite: Quelle est la signification de 1 dans field.put ("HomeTown", 1); –

+0

@CS 1.6, Cela signifie que Mongo trouvera un champ 'HomeTown' avec ** value ** est' 1'. Je peux me tromper mais je n'ai pas traité avec Mongo. Le '1' pourrait aussi signifier, limiter (comme dans 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}) 

aurait tort, mais

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

serait bon, parce que vous devez supprimer _id explicitement . Juste FYI.

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

vouliez-vous dire 'boolean Name = cursorDetails.hasNext(); while (Nom) 'as' while (cursorDetails.hasNext())' ?! –

Questions connexes