2011-08-26 75 views
18

從我的MongoDB我想要的等效的MongoDB數據庫,相當於爲SELECT列1,列2 FROM TBL

SELECT column1, column2 
    FROM tbl 

有了這個代碼,我得到的所有「行」,而且所有的「列」

DBCollection collection = database.getCollection("names"); 
    DBCursor cursor = collection.find(); 

我如想所有的 '行',但只 '列':ID,姓名,年齡

我該怎麼做?

感謝您的任何幫助!

回答

37

db.collection.find({},{_id:1,名稱:1,年齡:1})

的第一個參數找到(謂詞)是您的選擇標準,例如

db.collection.find({年齡:{$ GTE:21}})

第二個限制您檢索的字段,所以名字上大家21歲以上:

db.collection.find({年齡:{$ GTE:21}},{名稱:1})

字段選擇總是拉回到_id除非你特意將其關閉:

db.collection.find({},{_id:0})

然而,蒙戈默認不會檢查字段的存在。如果你想選擇某些字段,並且僅匹配具有這些字段的結果,你會希望使用:

db.collection.find({年齡:{$存在:真}})

MongoDB網站對.find()函數有更詳細的描述!

1

謝謝!我用下面的代碼修復了它。

BasicDBObject select = new BasicDBObject(); 
    select.put("id", 1); 
    select.put("name", 1); 
    select.put("age", 1); 
    collection.find(new BasicDBObject(), select); 

上面的代碼給了我所有的記錄,只有列名如上。