如何通过密钥名称从mongoDB中检索一个值?

21 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"}}]
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Ron*_*Ron 32

find() 足够.

db.CollectionName.find({},{HomeTown:1})
Run Code Online (Sandbox Code Playgroud)

在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"));
}
Run Code Online (Sandbox Code Playgroud)

  • field.put("HomeTown",1); 表示只返回HomeTown(和_id),field.put("HomeTown",0); 表示返回所有字段但不返回HomeTown.所以这意味着你不能在字段中都有0和1.db.CollectionName.find({},{HomeTown:1,PhoneNumber:0})会出错. (6认同)

Dhr*_*ruv 11

 db.CollectionName.find({},{HomeTown:1,PhoneNumber:0}) 
Run Code Online (Sandbox Code Playgroud)

会错的,但是

 db.CollectionName.find({},{HomeTown:1, _id:0}) 
Run Code Online (Sandbox Code Playgroud)

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