【问题标题】:MongoDB Database, equivalent for SELECT column1, column2 FROM tblMongoDB 数据库,相当于 SELECT column1, column2 FROM tbl
【发布时间】:2023-03-02 21:27:01
【问题描述】:

从我的 MongoDB 中,我想要等价于

  SELECT column1, column2
  FROM tbl

通过这段代码,我得到了所有的“行”,也得到了所有的“列”

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

例如,我想要所有“行”但“列”:id、姓名、年龄

我该怎么做?

感谢您的帮助!!

【问题讨论】:

    标签: select mongodb rows


    【解决方案1】:

    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()函数说明!

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        MongoDB 查询:

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

        【讨论】:

          猜你喜欢
          • 2018-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-16
          • 2011-01-29
          • 1970-01-01
          相关资源
          最近更新 更多