【问题标题】:Mongodb Java - How to return restricted fields with find() or findOne()Mongodb Java - 如何使用 find() 或 findOne() 返回受限字段
【发布时间】:2011-07-04 08:14:00
【问题描述】:

使用驱动程序 Java Mongodb,我正在寻找一种方法来仅返回受限字段 find()findOne()。 例如,我有一个集合 "people" 的字段:"id""name""surname""address""city"... 我只想返回 "name""surname"

我在网上搜索了一下,才找到这个Java Mongodb代码示例:http://vsbabu.org/mt/archives/2010/03/02/simple_mongodbjava_example.html

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    如果你使用的是Java Driver 3.1,你可以使用Projections

    collection.find().projection(Projections.include("name", "surname"));
    

    【讨论】:

    • 谢谢。包含之前的“预测”丢失了! +1
    • 您能说得更具体些吗?我没有尝试在 v3.8 上使用它,但文档说明这些方法存在,我认为功能没有根据文档发生变化。
    【解决方案2】:

    此代码将解决您的问题。(java driver 3.0.2)

     BasicDBObject fields = new BasicDBObject();
     fields.put("title", 1);
     DBCursor cursor = collection.find(new BasicDBObject(),fields).sort(new BasicDBObject("_id", 1));
    

    【讨论】:

      【解决方案3】:

      您可以传递另一个带有字段名称的 DBObject 并在此处传递:

      cur = coll.find(new BasicDBObject("id", 6655), your_dbobject_with_field_names);
      

      这里是API documentation

      【讨论】:

      • 好吧,看来我们必须返回 min。 2 个字段... this.dbcoll = this.db.getCollection("people"); DBCursor cursor = this.dbcoll.find(new BasicDBObject(), new BasicDBObject("name", "surname"));
      • 我想你会做 BasicDBObjectBuilder.start().add("name",1).add("surname",1).get()
      【解决方案4】:

      这段代码为我运行:

      String json = "{_id:0,name:1,surname:1}";
      Bson bson =  BasicDBObject.parse( json );
      FindIterable<Document> iterDoc = collection.find().projection(bson);
      

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 1970-01-01
        • 2013-07-16
        • 1970-01-01
        • 2021-10-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-09
        • 2017-08-18
        相关资源
        最近更新 更多