java - 使用 Java 驱动程序从 MongoDB 数组中检索一组文档

标签 java mongodb mongodb-java

我有一个像这样的 MongoDB 文档结构:

{ 
  "name": "list"
  "config": "default"
  "items": [
    {
      "email": "user1@mail.com"
      "status": true
      "number": 123
    },
    ...
    {
      "email": "user100@mail.com"
      "status": false
      "number": 432
    },
   ]
}

现在,我如何检索符合特定条件的多个子文档。例如,我想获取 status = true 的所有文档。我知道可以使用 $elemMatch,但它仅返回第一个匹配实例,并且我需要与指定条件相对应的 ALL 文档。请说明如何使用 Java 来完成此操作。

最佳答案

您可以按如下方式在 Java 中执行此操作。

        Mongo mongo = new Mongo("localhost:27017");
        DB db = mongo.getDB("myDB");
        DBCollection coll = db.getCollection("myCollection");

        DBObject statusQuery = new BasicDBObject("status", true);
        DBObject elemMatchQuery = new BasicDBObject("$elemMatch", statusQuery);

        DBObject fields = new BasicDBObject();
        fields.put("items", elemMatchQuery);
        fields.put("name", 1);
        fields.put("config", 1);

        DBCursor cur = coll.find(new BasicDBObject(), fields);

        while (cur.hasNext()) {
            DBObject obj = cur.next();
            // Get fields from object
        }

关于java - 使用 Java 驱动程序从 MongoDB 数组中检索一组文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18736898/

相关文章:

java - KStream mapValues 和 transformValues 之间的区别

java - 数据结构的多态性

java - 如何使用java在mongodb中搜索文档并从中删除字段?

node.js - Express Mongoose Model.find() 返回未定义

java - 需要使用 java 3.12.0 驱动程序从 java 应用程序中的 mongoDB Atlas 获取具有相同名字的客户 customerID 列表

java - 如何使用@DbRef 注释引用 GridFSFile (spring data mongodb)

java - 从结果集中获取统计信息

java - 问题跟踪程序 - ArrayList 中的对象

node.js - 不同类型帖子/文章的 Mongodb 模式

java - 从 MongoDB 读取数据