Java 根据JSON的某些属性获取JSON文档
假设MongoCollection有2个文档,如下所示Java 根据JSON的某些属性获取JSON文档,java,json,mongodb,Java,Json,Mongodb,假设MongoCollection有2个文档,如下所示 {"employee_id": "1", {"name":"A","age":"18"}} 及 如何查询此集合,使其仅使用员工id返回第一个文档 使用以下Maven条目 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artif
{"employee_id": "1", {"name":"A","age":"18"}}
及
如何查询此集合,使其仅使用员工id返回第一个文档
使用以下Maven条目
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.5.0-alpha1</version>
</dependency>
您提供的示例文档不是有效的JSON;它们似乎包含两个值1和{name:A,age:18},但只有一个键:employee_id 假设 有效的文件格式为:
{"employee_id": "1", "details": {"name":"A","age":"18"}}
您正在寻找关于使用MongoJava驱动程序的指导。这个假设是基于您包含了该驱动程序的Maven坐标。
然后,下面的代码显示了如何通过筛选员工id来查找第一个文档:
{"employee_id": "1", "details": {"name":"A","age":"18"}}
@Test
public void canRead() {
MongoClient mongoClient = new MongoClientFactory().create();
MongoCollection<Document> collection = mongoClient.getDatabase("stackoverflow").getCollection("sample");
// this test assumes that the two documents you showed in your question have already been written to the collection e.g.
// collection.insertOne(Document.parse("{\"employee_id\": \"1\", \"details\": {\"name\":\"A\",\"age\":\"18\"}}"));
// collection.insertOne(Document.parse("{\"employee_id\": \"2\", \"details\": {\"name\":\"B\",\"age\":\"18\"}}"));
Bson filter = Filters.eq("employee_id", "1");
Assert.assertEquals(1, collection.count(filter));
Document document = collection.find(filter).first();
Assert.assertEquals("1", document.get("employee_id"));
Document details = (Document) document.get("details");
Assert.assertEquals("A", details.get("name"));
// age is a string?!
Assert.assertEquals("18", details.get("age"));
}