2010-11-23 9 views
19

mongoDB를 처음 사용했습니다. java 및 mongoDB를 사용하고 있습니다. 내가 콜렉션에서는 JSON 같은mongoDB에서 키 이름으로 값을 검색하는 방법은 무엇입니까?

[{ "_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을 알고 있나요?

mongo 사이트에서 나는 단지 find()findOne()을 찾을 수 있습니다.

감사합니다.

답변

30

find()은 충분하다.

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 : 귀하의 지원 주셔서 감사합니다. 나는 field.put ("HomeTown", 1)에서 '1'의 의미는 무엇인가?라는 질문을 가지고있다. –

+0

@The 엘리트 신사 : field.put 1의 의미는 무엇입니까 ("고향", 1); –

+0

는 @CS 1.6, 그것은 몽고가 ** 값 **입니다'1'과 필드'HomeTown'를 찾을 수 있다는 것을 의미한다. 나는 틀릴 수도 있지만 몽고를 다루지 않았습니다. '1'은 SQL에서와 마찬가지로 limit를 의미 할 수도 있습니다. –

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

이 잘못 될,하지만 당신은 명시 적으로 _id을 억제해야하기 때문에

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

는 바로 다음과 같습니다

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

자바, 그것은 것 . 그냥 참고하시기 바랍니다.

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

당신은'boolean Name = cursorDetails.hasNext();를 의미 했습니까? while (Name)'as 'while (cursorDetails.hasNext())'?! –

관련 문제