Java 如何通过键名从 mongoDB 检索值?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4254039/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 15:03:37  来源:igfitidea点击:

How to retrieve a value from mongoDB, by its key name?

javamongodb

提问by

I am new to mongoDB. I am using java and mongoDB. I have a json like,

我是 mongoDB 的新手。我正在使用 java 和 mongoDB。我有一个像 json

[{ "_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 a collection all doc's have different HomeTown, i just know the key name HomeTown, how can i get the HomeTownvalues?

在一个集合中,所有文档都有不同的HomeTown,我只知道键名HomeTown,我怎样才能得到HomeTown值?

In mongo site, i just can find find()and findOne().

在 mongo 站点中,我只能找到find()findOne()

Thanks!

谢谢!

采纳答案by Ron

find()is enough.

find()足够。

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

in java, it would be:

在java中,它将是:

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

回答by Hitesh Kumar

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

回答by Dhruv

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

Would be wrong, but

会错,但是

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

would be right, because you need to suppress _idexplicitly. Just FYI.

是对的,因为你需要_id明确地压制。仅供参考。

回答by user27

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