Shell Mode? https://docs.mongodb.com/manual/reference/mongodb-extended-json/#oid
How to enable shell mode so I can have "_id" only in the JSON output instead of the following.
"_id": {
"$oid": "5d3bd0f8454e59408cffdb57"
},
I prefer to have JSON output as follows.
"_id": "5d3bd0f8454e59408cffdb57"
I've several levels of nested records in my JSON output, and then each nested records with its own nested $oids are exploding the depth of my payload.
Edit
Following discussion, from the linked answer, here's the output from each mode.
JsonWriterSettings shellMode = JsonWriterSettings.builder().outputMode(JsonMode.SHELL).build();
"_id": ObjectId("5d3bd0f8454e59408cffdb57")
JsonWriterSettings strictMode = JsonWriterSettings.builder().outputMode(JsonMode.STRICT).build();
"_id": {"$oid": "5d3bd0f8454e59408cffdb57"}
JsonWriterSettings extendedMode = JsonWriterSettings.builder().outputMode(JsonMode.EXTENDED).build();
"_id": {"$oid": "5d3bd0f8454e59408cffdb57"}
JsonWriterSettings relaxed = JsonWriterSettings.builder().outputMode(JsonMode.RELAXED).build();
"_id": {"$oid": "5d3bd0f8454e59408cffdb57"}
Complete Code
JsonWriterSettings relaxed = JsonWriterSettings.builder().outputMode(JsonMode.RELAXED).build();
try (MongoCursor<Document> cursor = ((MongoCollection)data).find().iterator()) {
response.getWriter().write("[");
while (cursor.hasNext()) {
response.getWriter().write(cursor.next().toJson(relaxed) + (cursor.hasNext() ? "," : ""));
}
response.getWriter().write("]");
}