MongoDB数据库,相当于SELECT column1,column2 FROM tbl

时间:2011-08-26 14:17:04

标签: select mongodb rows

从我的MongoDB中我想要等效于

  SELECT column1, column2
  FROM tbl

使用此代码,我可以获得所有“行”以及所有“列”

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

例如,我想所有'行'但'列':id,name,age

我该怎么做?

感谢您的帮助!!

3 个答案:

答案 0 :(得分:37)

  

db.collection.find({},{_ id:1,name:1,age:1})

查找的第一个参数(谓词)是您的选择标准,例如

  

db.collection.find({age:{$ gte:21}})

第二个限制您检索的字段,因此对于21岁或以上的所有人来说,名称都是

  

db.collection.find({age:{$ gte:21}},{name:1})

除非您专门将其关闭,否则字段选择器始终会拉回_id:

  

db.collection.find({},{_ id:0})

但是,默认情况下,Mongo不会检查字段是否存在。如果要选择某些字段,并且只匹配包含这些字段的结果,则需要使用:

  

db.collection.find({age:{$ exists:true}})

MongoDB网站有更详细的.find()函数说明!

答案 1 :(得分:1)

谢谢!,我用下面的代码修复了它。

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

上面的代码为我提供了所有记录,只有上面的列名。

答案 2 :(得分:0)

如果要选择一列或多列,例如SQL查询。例如 如果您的SQL查询是这样

select name, content from knowledgebase where applicationId='2955f3e174dce55190a87ed0e133adwdeb92';

MongoDB查询:

db.knowledgebase.find({ "applicationId": "2955f3e174dce55190a87ed0e133adwdeb92"}, { "name": 1,    "content": 1});