有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从mongoDB中按键名检索值?

我是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"}}]

在一个集合中,所有文档都有不同的HomeTown,我只知道键名HomeTown,如何获得HomeTown

在mongo网站上,我只能找到find()findOne()

谢谢


共 (4) 个答案

  1. # 1 楼答案

    find()就足够了

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

    在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"));
    }
    
  2. # 2 楼答案

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

    这可能是错误的,但是

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

    这是正确的,因为您需要显式地抑制_id。仅供参考

  3. # 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);
    }
    
  4. # 4 楼答案

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