2010-11-23 2 views
19

Ich bin neu in mongoDB. Ich benutze Java und MongoDB. Ich habe eine json wieWie kann man einen Wert von mongoDB mit seinem Schlüsselnamen abrufen?

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

In einer Sammlung aller doc haben unterschiedliche HomeTown, ich weiß nur, die Schlüsselnamen HomeTown, wie kann ich die HomeTown Werte bekommen?

In Mongo Website kann ich nur find() und findOne() finden.

Danke!

Antwort

30

find() ist genug.

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

in java, wäre es:

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: Danke für Ihre Unterstützung. Ich habe eine Frage, Was bedeutet '1' in field.put (" HomeTown ", 1); –

+0

@Die Elite Gentleman: Was ist die Bedeutung von 1 in field.put ("HomeTown", 1); –

+0

@CS 1.6, Es bedeutet, dass Mongo ein Feld "HomeTown" mit ** Wert ** "1" finden wird. Ich mag mich irren, aber ich habe mich nicht mit Mongo beschäftigt. Die '1' könnte auch bedeuten, zu begrenzen (wie in 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}) 

falsch wäre, aber

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

würde richtig sein, weil Sie _id explizit zu unterdrücken müssen . Nur zu deiner Information.

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

meintest du 'boolean Name = cursorDetails.hasNext(); while (Name) 'as' while (cursorDetails.hasNext()) '?! –

Verwandte Themen