2017-01-29 66 views
0

我正试图将“nodes”数组中的所有元素加载到Java List或Hashmap中。如何在MongoDB中检索/查找嵌套数组的所有元素Java

我正在处理特定的JSON格式,我无法修改。 Mongo DB集合仅包含一个文档,该文档如下所示。我试图查询“节点”数组的所有元素,但无法设法这样做。

MongoCollection<Document> collection = mongoDB.getCollection(collectionName); 
BasicDBObject query = new BasicDBObject(); 
query.put("nodes", ""); 
List<Document> test2 = collection.find(query).into(new ArrayList<Document>()); 

Test2现在返回NULL。我知道我错了,但不知道如何去做。 这里是JSON

{ 
    "_id": "12123434", 
    "nodes": [ 
    { 
     "id": "1", 
     "name": "bla", 
     "attributes": [ 
     "string1", 
     "string2" 
     ] 
    }, 
    { 
     "id": "2", 
     "name": "blabla", 
     "attributes": [ 
     "string1", 
     "string2" 
     ] 
    } 
    ], 
    "groups": [] 
} 

回答

2

你只需要项目nodes和地图。

import static com.mongodb.client.model.Projections.*; 

List<Document> nodes = (List<Document>) collection.find().projection(fields(include("nodes"), excludeId())).map(document -> document.get("nodes")).first(); 
+0

我不能得到方法include()和excludeId()被识别。我尝试导入所有内容,但它仍然不起作用 – Storm

+0

将静态导入添加到答案中。 – Veeram

+0

谢谢,完美的作品! – Storm

相关问题