2010-11-23 6 views
19

Ben mongoDB için yeni. Java ve mongoDB kullanıyorum. Bir koleksiyonda bir json gibiAnahtar adıyla mongoDB'den nasıl bir değer alınır?

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

olan tüm doc en i HomeTown değerler elde edebilirsiniz nasıl farklı HomeTown, ben sadece anahtar adını HomeTown biliyor var?

Mongo sitesinde sadece find() ve findOne()'u bulabilirsiniz.

Teşekkürler!

cevap

30

find() yeterlidir.

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: Desteğiniz için teşekkürler. Bir sorum var, "1" in field.put içindeki anlamı nedir ("HomeTown", 1); –

+0

@ The Elite Gentleman: Field.put'ta 1'in anlamı nedir ("HomeTown", 1); –

+0

@CS 1.6, Mongo'nun ** değeri ** olan bir 'HomeTown' alanı bulacağını ifade ediyor. Yanılıyor olabilirim ama Mongo ile ilgilenmedim. '1' de, sınırlama (SQL'de olduğu gibi) anlamına gelebilir. –

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}) 

yanlış olur, ama açıkça _id bastırmak gerektiğinden

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

, doğru olurdu:

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

java, olurdu . Sadece 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

Eğer 'demek ki boolean Ad = cursorDetails.hasNext(); iken (Name) '(while iken (cursorDetails.hasNext())' ?! –