Reputation: 397
I am trying to find / load all elements in the "nodes" array into a Java List or Hashmap.
I'm dealing with a specific JSON format that I cannot modify. The Mongo DB collection contains only one document, and that document is shown below. I am trying to query all elements of the "nodes" array but can't manage to do so.
MongoCollection<Document> collection = mongoDB.getCollection(collectionName);
BasicDBObject query = new BasicDBObject();
query.put("nodes", "");
List<Document> test2 = collection.find(query).into(new ArrayList<Document>());
Test2 returns NULL at the moment. I know I'm wrong but can't figure out how to do it. And here is the JSON
{
"_id": "12123434",
"nodes": [
{
"id": "1",
"name": "bla",
"attributes": [
"string1",
"string2"
]
},
{
"id": "2",
"name": "blabla",
"attributes": [
"string1",
"string2"
]
}
],
"groups": []
}
Upvotes: 0
Views: 3920
Reputation: 103
Thank you Sagar, your code snippet helped me a lot. Just in case if someone wants to target the filtering on a field (ex - id) within the nodes document then the following can be used.
List<Document> nodes = (List<Document>) collection.find().projection(elemMatch("nodes",new Document("id",2))).map(document -> document.get("nodes")).first();
Upvotes: 0
Reputation: 75924
You just need to project nodes
and map.
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();
Upvotes: 2