我有一个像这样的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
}