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