我有一个像这样的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,但它仅返回第一个匹配的实例,并且我需要与指定条件相对应的所有文档。请展示如何使用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
        }

09-30 15:05
查看更多