Java 根据JSON的某些属性获取JSON文档

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

假设MongoCollection有2个文档,如下所示

{"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"));
}