【问题标题】:How to retrieve a subset of fields using the Java MongoDB driver?如何使用 Java MongoDB 驱动程序检索字段子集?
【发布时间】:2011-07-25 09:39:11
【问题描述】:

这里有新海报,我找到了这个以前的帖子,但它是在 C# 上的, 我尝试直接在 JSP 页面的 java 代码中执行此查询,由于某种原因,它不接受 find() 查询的 {} 中的信息,只是给出一个错误...

那么窥视,我如何在 Java 中做到这一点:

// retrieve ssn field for documents where last_name == 'Smith':
db.users.find({last_name: 'Smith'}, {'ssn': 1});

谢谢!

PS:为什么 C# 有很好的小 .Exclude() 和 .Include() 命令而 java 没有? 哭泣

【问题讨论】:

    标签: java jsp mongodb mongodb-java


    【解决方案1】:

    java 驱动程序遵循与 shell 完全相同的 API。只需将包含您的场投影的DBObject 作为第二个参数传递给findfindOne

    据我所知,官方 C# 驱动程序没有公开 Include() 和 Exclude() 方法,因为它们违反了标准 API。

    【讨论】:

    • 这就是问题所在,我尝试创建一个 DBObject,但如果我想要以下查询:coll.find({},{"_id":0});但是,当我使用 DBObject 时,它似乎确实可以读取和连接,但是当我测试它时,我只得到一个空的 JSON 字符串,例如:[{}]
    • 这部分问题的代码如下:Mongo m = new Mongo("localhost"); DB db = m.getDB("names"); DBCollection coll = db.getCollection("names"); String jsonData = "["; int count = 0; for(DBObject items : coll.find()) { BasicDBObject ugh = new BasicDBObject(); ugh.putAll(items); if(count == 0){jsonData+=ugh.get("names").toString();} else {jsonData += "," + ugh.get("names").toString();;} count++; } jsonData += "]";
    • 它确实有效,我现在可以将它全部放入一个字符串中,这个想法是将此数据添加到一个 dojo.grid.DataGrid 对象,但由于某种原因它不接受字符串作为输入数据,但是这部分问题正在起作用!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2016-03-13
    相关资源
    最近更新 更多