2011-08-26 69 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); 

上面的代码给了我所有的记录,只有列名如上。