Skip to content

Commit 9b4afd4

Browse files
authored
BAEL-5361 | Article code (#12455)
1 parent c876ceb commit 9b4afd4

2 files changed

Lines changed: 167 additions & 0 deletions

File tree

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.baeldung.mongo.find;
2+
3+
import com.mongodb.MongoClient;
4+
import com.mongodb.client.FindIterable;
5+
import com.mongodb.client.MongoCollection;
6+
import com.mongodb.client.MongoCursor;
7+
import com.mongodb.client.MongoDatabase;
8+
import org.bson.Document;
9+
import org.bson.types.ObjectId;
10+
11+
import static com.mongodb.client.model.Filters.eq;
12+
13+
public class FindWithObjectId {
14+
15+
private static final String OBJECT_ID_FIELD = "_id";
16+
17+
private static MongoClient mongoClient;
18+
private static MongoDatabase database;
19+
private static MongoCollection<Document> collection;
20+
private static String collectionName;
21+
private static String databaseName;
22+
23+
public static void setUp() {
24+
if (mongoClient == null) {
25+
mongoClient = new MongoClient("localhost", 27017);
26+
27+
databaseName = "baeldung";
28+
collectionName = "employee";
29+
30+
database = mongoClient.getDatabase(databaseName);
31+
collection = database.getCollection(collectionName);
32+
}
33+
}
34+
35+
public static void retrieveAllDocumentsUsingFindWithObjectId() {
36+
Document document = collection.find()
37+
.first();
38+
System.out.println(document);
39+
40+
FindIterable<Document> documents = collection.find(eq(OBJECT_ID_FIELD, document.get(OBJECT_ID_FIELD)));
41+
42+
MongoCursor<Document> cursor = documents.iterator();
43+
while (cursor.hasNext()) {
44+
System.out.println(cursor.next());
45+
}
46+
}
47+
48+
public static void retrieveFirstDocumentWithObjectId() {
49+
Document document = collection.find()
50+
.first();
51+
System.out.println(document);
52+
53+
FindIterable<Document> documents = collection.find(eq(OBJECT_ID_FIELD, document.get(OBJECT_ID_FIELD)));
54+
Document queriedDocument = documents.first();
55+
56+
System.out.println(queriedDocument);
57+
}
58+
59+
public static void retrieveDocumentWithRandomObjectId() {
60+
FindIterable<Document> documents = collection.find(eq(OBJECT_ID_FIELD, new ObjectId()));
61+
Document queriedDocument = documents.first();
62+
63+
if (queriedDocument != null) {
64+
System.out.println(queriedDocument);
65+
} else {
66+
System.out.println("No documents found");
67+
}
68+
}
69+
70+
public static void main(String args[]) {
71+
72+
setUp();
73+
74+
retrieveAllDocumentsUsingFindWithObjectId();
75+
76+
retrieveFirstDocumentWithObjectId();
77+
78+
retrieveDocumentWithRandomObjectId();
79+
}
80+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.baeldung.mongo.find;
2+
3+
import com.mongodb.MongoClient;
4+
import com.mongodb.client.FindIterable;
5+
import com.mongodb.client.MongoCollection;
6+
import com.mongodb.client.MongoCursor;
7+
import com.mongodb.client.MongoDatabase;
8+
import org.bson.Document;
9+
import org.bson.types.ObjectId;
10+
import org.junit.AfterClass;
11+
import org.junit.BeforeClass;
12+
import org.junit.Test;
13+
14+
import java.io.BufferedReader;
15+
import java.io.IOException;
16+
import java.io.InputStream;
17+
import java.io.InputStreamReader;
18+
19+
import static com.mongodb.client.model.Filters.eq;
20+
import static org.junit.Assert.*;
21+
22+
public class FindWithObjectIdLiveTest {
23+
24+
private static final String OBJECT_ID_FIELD = "_id";
25+
26+
private static MongoClient mongoClient;
27+
private static MongoDatabase database;
28+
private static MongoCollection<Document> collection;
29+
private static final String DATASET_JSON = "/employee.json";
30+
31+
@BeforeClass
32+
public static void setUp() throws IOException {
33+
if (mongoClient == null) {
34+
mongoClient = new MongoClient("localhost", 27017);
35+
36+
database = mongoClient.getDatabase("baeldung");
37+
collection = database.getCollection("employee");
38+
39+
collection.drop();
40+
41+
InputStream is = FindOperationLiveTest.class.getResourceAsStream(DATASET_JSON);
42+
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
43+
reader.lines()
44+
.forEach(line -> collection.insertOne(Document.parse(line)));
45+
reader.close();
46+
}
47+
}
48+
49+
@Test
50+
public void givenEmployeeCollection_whenFetchingDocumentsUsingObjectId_thenCheckingForDocuments() {
51+
Document employee = collection.find()
52+
.first();
53+
ObjectId objectId = (ObjectId) employee.get(OBJECT_ID_FIELD);
54+
55+
FindIterable<Document> documents = collection.find(eq(OBJECT_ID_FIELD, objectId));
56+
MongoCursor<Document> cursor = documents.iterator();
57+
58+
assertNotNull(cursor);
59+
assertTrue(cursor.hasNext());
60+
}
61+
62+
@Test
63+
public void givenEmployeeCollection_whenFetchingFirstDocumentUsingObjectId_thenCheckingForDocument() {
64+
Document employee = collection.find()
65+
.first();
66+
ObjectId objectId = (ObjectId) employee.get(OBJECT_ID_FIELD);
67+
68+
Document queriedEmployee = collection.find(eq(OBJECT_ID_FIELD, objectId))
69+
.first();
70+
71+
assertNotNull(queriedEmployee);
72+
assertEquals(employee.get(OBJECT_ID_FIELD), queriedEmployee.get(OBJECT_ID_FIELD));
73+
}
74+
75+
@Test
76+
public void givenEmployeeCollection_whenFetchingUsingRandomObjectId_thenCheckingForDocument() {
77+
Document employee = collection.find(eq(OBJECT_ID_FIELD, new ObjectId()))
78+
.first();
79+
80+
assertNull(employee);
81+
}
82+
83+
@AfterClass
84+
public static void cleanUp() {
85+
mongoClient.close();
86+
}
87+
}

0 commit comments

Comments
 (0)