- Java & MongoDB 教程
- Java & MongoDB - 首頁
- Java & MongoDB - 概述
- Java & MongoDB - 環境設定
- Java & MongoDB 示例
- Java & MongoDB - 連線資料庫
- Java & MongoDB - 顯示資料庫
- Java & MongoDB - 刪除資料庫
- Java & MongoDB - 建立集合
- Java & MongoDB - 刪除集合
- Java & MongoDB - 顯示集合
- Java & MongoDB - 插入文件
- Java & MongoDB - 查詢文件
- Java & MongoDB - 更新文件
- Java & MongoDB - 刪除文件
- Java & MongoDB - 嵌入式文件
- Java & MongoDB - 引用文件
- Java & MongoDB - 限制記錄數
- Java & MongoDB - 排序記錄
- Java & MongoDB 有用資源
- Java & MongoDB 快速指南
- Java & MongoDB - 有用資源
- Java & MongoDB - 討論
Java & MongoDB 快速指南
Java & MongoDB - 概述
MongoDB 開發團隊提供了用於 Java 的 MongoDB 驅動程式,並提供了各種可用資源。
使用 Java 連線 MongoDB 的第一步是在 Java 類路徑中擁有 mongodb 驅動程式,然後使用 mongodb API 連線到資料庫。
連線到 MongoDB 資料庫
假設 MongoDB 安裝在本地並使用預設埠,則以下語法連線到 MongoDB 資料庫。
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
由於 MongoClient 假設各種預設值,因此也可以使用以下方式使用它。
MongoClient mongoClient = MongoClients.create();
建立/連線資料庫
一旦例項化了 mongoClient,就可以使用其 getDatabase() 方法來獲取到資料庫的連線。
MongoDatabase database = mongoClient.getDatabase("myDb");
如果資料庫不存在,則上述命令將建立它。
在後續章節中,我們將看到使用 Java 對 MongoDB 進行各種操作。
Java & MongoDB - 環境設定
安裝 MongoDB 資料庫
按照使用 MongoDB - 環境 的 MongoDB 安裝步驟操作
安裝 Java
可以從以下連結免費下載 Java SE:
https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
您可以根據您的作業系統下載一個版本。
按照說明下載 Java,然後執行.exe檔案以在您的計算機上安裝 Java。在計算機上安裝 Java 後,您需要設定環境變數以指向正確的安裝目錄。
為 Windows 2000/XP 設定路徑
假設您已將 Java 安裝在 c:\Program Files\java\jdk 目錄下:
右鍵單擊“我的電腦”,然後選擇“屬性”。
在“高階”選項卡下單擊“環境變數”按鈕。
現在,修改“Path”變數,使其還包含 Java 可執行檔案的路徑。例如,如果當前路徑設定為“C:\WINDOWS\SYSTEM32”,則將路徑更改為“C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin”。
為 Windows 95/98/ME 設定路徑
假設您已將 Java 安裝在 c:\Program Files\java\jdk 目錄下:
編輯“C:\autoexec.bat”檔案,並在末尾新增以下行:
SET PATH=%PATH%;C:\Program Files\java\jdk\bin
為 Linux、UNIX、Solaris、FreeBSD 設定路徑
應將環境變數 PATH 設定為指向 Java 二進位制檔案已安裝的位置。如果您遇到困難,請參考您的 shell 文件。
例如,如果您使用 bash 作為 shell,則應在“.bashrc”檔案的末尾新增以下行:export PATH=/path/to/java:$PATH
常用的 Java 編輯器
要編寫 Java 程式,您需要一個文字編輯器。市場上還有更復雜的 IDE 可用。但目前,您可以考慮以下其中一種:
記事本 - 在 Windows 機器上,您可以使用任何簡單的文字編輯器,如記事本(本教程推薦)或 TextPad。
Netbeans - 這是一款開源且免費的 Java IDE。可以從 https://netbeans.org/index.html 下載。
Eclipse - 這也是一個由 Eclipse 開源社群開發的 Java IDE,可以從 www.eclipse.org/ 下載。
Java MongoDB 驅動程式
您需要下載 jar 檔案 mongo-java-driver.jar。確保下載這些 jar 檔案的最新版本。
您需要將下載的 jar 檔案包含到您的類路徑中。
我們使用 mongo-java-driver-3.12.8.jar 來執行示例。
Java & MongoDB - 連線資料庫
要連線資料庫,您需要指定資料庫名稱,如果資料庫不存在,MongoDB 將自動建立它。
MongoDatabase database = mongo.getDatabase("myDb");
示例
以下是連線到資料庫的程式碼片段:
import com.mongodb.MongoCredential;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongo.getDatabase("myDb");
// Creating Credentials
MongoCredential credential;
credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray());
System.out.println("Credentials ::"+ credential);
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Credentials ::MongoCredential{mechanism=null, userName='sampleUser', source='myDb', password=<hidden>, mechanismProperties=<hidden>}
Java & MongoDB - 顯示資料庫
要顯示資料庫,可以使用 MongoClient.listDatabaseNames() 方法獲取所有資料庫的名稱。
MongoIterable<String> list = mongoClient.listDatabaseNames();
for (String name : list) {
System.out.println(name);
}
由於我們在 連線資料庫 章節中建立了一個空資料庫,我們需要插入一個文件才能使其在 mongodb 資料庫列表中可見。
示例
以下是列出資料庫的程式碼片段:
import org.bson.Document;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
database.createCollection("sampleCollection");
// Retrieving a collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
Document document = new Document("title", "MongoDB")
.append("description", "database")
.append("likes", 100)
.append("url", "https://tutorialspoint.tw/mongodb/")
.append("by", "tutorials point");
//Inserting document into the collection
collection.insertOne(document);
MongoIterable<String> list = mongoClient.listDatabaseNames();
for (String name : list) {
System.out.println(name);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
admin config local myDb
Java & MongoDB - 刪除資料庫
要刪除資料庫,可以使用 MongoDatabse.drop() 方法刪除選定的資料庫。
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create();
// connect the database
MongoDatabase database = mongoClient.getDatabase("myDb");
// drop the database
database.drop();
示例
以下是刪除資料庫的程式碼片段:
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// drop the database
database.drop();
System.out.println("Database dropped.");
// print the databases
MongoIterable<String> list = mongoClient.listDatabaseNames();
for (String name : list) {
System.out.println(name);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Database dropped. admin config local
Java & MongoDB - 建立集合
要刪除資料庫,可以使用 MongoDatabse.createCollection() 方法在資料庫中建立一個集合。
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create();
// Connect the database
MongoDatabase database = mongoClient.getDatabase("myDb");
// Create the collection
database.createCollection("sampleCollection");
示例
以下是建立集合的程式碼片段:
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
// Connect to database
MongoDatabase database = mongoClient.getDatabase("myDb");
// Create the collection
database.createCollection("sampleCollection");
System.out.println("Collection created.");
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Collection created.
Java & MongoDB - 刪除集合
要刪除資料庫,可以使用 collection.drop() 方法刪除資料庫中的集合。
// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
// delete the collection
collection.drop();
示例
以下是刪除集合的程式碼片段:
import org.bson.Document;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
// get the database
MongoDatabase database = mongoClient.getDatabase("myDb");
// Retrieving a collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
collection.drop();
System.out.println("Collection dropped.");
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Collection dropped.
Java & MongoDB - 顯示集合
要顯示集合列表,可以使用 database.listCollectionNames() 方法獲取資料庫中集合名稱的列表。
MongoIterable<String> collections = database.listCollectionNames();
示例
以下是顯示集合列表的程式碼片段:
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
// Get the database
MongoDatabase database = mongoClient.getDatabase("myDb");
// Create the collection
database.createCollection("sampleCollection");
// Get the list of collection names
MongoIterable<String> collections = database.listCollectionNames();
for (String name : collections) {
System.out.println(name);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
sampleCollection
Java & MongoDB - 插入文件
要在集合中插入文件,可以使用 collection.insertOne() 或 collection.insertMany() 方法在集合中插入文件。
// insert a single document collection.insertOne(document); // insert multiple documents collection.insertMany(documents);
示例
以下是將文件插入集合的程式碼片段:
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
Document document = new Document("First_Name", "Mahesh")
.append("Last_Name", "Parashar")
.append("Date_Of_Birth", "1990-08-21")
.append("e_mail", "mahesh_parashar.123@gmail.com")
.append("phone", "9034343345");
collection.insertOne(document);
List<Document> documents = new ArrayList<>();
documents.add(new Document("First_Name", "Radhika")
.append("Last_Name", "Sharma")
.append("Date_Of_Birth", "1995-09-26")
.append("e_mail", "radhika_sharma.123@gmail.com")
.append("phone", "9000012345"));
documents.add(new Document("First_Name", "Rachel")
.append("Last_Name", "Christopher")
.append("Date_Of_Birth", "1990-02-16")
.append("e_mail", "Rachel_Christopher.123@gmail.com")
.append("phone", "9000054321"));
documents.add(new Document("First_Name", "Fathima")
.append("Last_Name", "Sheik")
.append("Date_Of_Birth", "1990-02-16")
.append("e_mail", "Fathima_Sheik.123@gmail.com")
.append("phone", "9000054321"));
collection.insertMany(documents);
System.out.println("Documents inserted.");
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Documents inserted.
Java & MongoDB - 查詢文件
要選擇集合中的文件,可以使用 collection.find() 或 collection.find(filter) 方法選擇集合的文件。
// find all documents of a collection collection.find(); // find document(s) fulfiling the filter criteria collection.find(filter);
示例
以下是顯示所選文件的程式碼片段:
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
// Find all documents
FindIterable<Document> allDocuments = collection.find();
for (Document document : allDocuments) {
System.out.println(document);
}
System.out.println("***Selected Document***");
// Select a particular document
FindIterable<Document> documents = collection.find(Filters.eq("First_Name","Mahesh"));
for (Document document : documents) {
System.out.println(document);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Document{{_id=60b70d426214461f10ac5c99, First_Name=Mahesh, Last_Name=Parashar, Date_Of_Birth=1990-08-21, e_mail=mahesh_parashar.123@gmail.com, phone=9034343345}}
Document{{_id=60b70d426214461f10ac5c9a, First_Name=Radhika, Last_Name=Sharma, Date_Of_Birth=1995-09-26, e_mail=radhika_sharma.123@gmail.com, phone=9000012345}}
Document{{_id=60b70d426214461f10ac5c9b, First_Name=Rachel, Last_Name=Christopher, Date_Of_Birth=1990-02-16, e_mail=Rachel_Christopher.123@gmail.com, phone=9000054321}}
Document{{_id=60b70d426214461f10ac5c9c, First_Name=Fathima, Last_Name=Sheik, Date_Of_Birth=1990-02-16, e_mail=Fathima_Sheik.123@gmail.com, phone=9000054321}}
********
Document{{_id=60b70d426214461f10ac5c99, First_Name=Mahesh, Last_Name=Parashar, Date_Of_Birth=1990-08-21, e_mail=mahesh_parashar.123@gmail.com, phone=9034343345}}
Java & MongoDB - 更新文件
要更新集合中的文件,可以使用 collection.updateOne() 方法更新集合的特定文件。
collection.updateOne(filter,update);
示例
以下是更新和顯示已更新文件的程式碼片段:
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
// Find all documents
collection.updateOne(Filters.eq("First_Name","Mahesh"),
Updates.set("e_mail", "maheshparashar@gmail.com"));
System.out.println("Document Updated.");
System.out.println("***Updated Document***");
// Select a particular document
FindIterable<Document> documents = collection.find(Filters.eq("First_Name","Mahesh"));
for (Document document : documents) {
System.out.println(document);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Document Updated.
***Updated Document***
Document{{_id=60b70d426214461f10ac5c99, First_Name=Mahesh, Last_Name=Parashar, Date_Of_Birth=1990-08-21, e_mail=maheshparashar@gmail.com, phone=9034343345}}
Java & MongoDB - 刪除文件
要刪除集合中的文件,可以使用 collection.deleteOne() 方法刪除集合的特定文件。
collection.deleteOne(filter);
示例
以下是刪除文件並顯示剩餘文件的程式碼片段:
import org.bson.Document;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
// Find all documents
collection.deleteOne(Filters.eq("First_Name","Mahesh"));
System.out.println("Document deleted.");
System.out.println("***Documents***");
// Select a particular document
FindIterable<Document> documents = collection.find();
for (Document document : documents) {
System.out.println(document);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Document deleted.
***Documents***
Document{{_id=60b70d426214461f10ac5c9a, First_Name=Radhika, Last_Name=Sharma, Date_Of_Birth=1995-09-26, e_mail=radhika_sharma.123@gmail.com, phone=9000012345}}
Document{{_id=60b70d426214461f10ac5c9b, First_Name=Rachel, Last_Name=Christopher, Date_Of_Birth=1990-02-16, e_mail=Rachel_Christopher.123@gmail.com, phone=9000054321}}
Document{{_id=60b70d426214461f10ac5c9c, First_Name=Fathima, Last_Name=Sheik, Date_Of_Birth=1990-02-16, e_mail=Fathima_Sheik.123@gmail.com, phone=9000054321}}
Java & MongoDB - 嵌入式文件
要在集合中插入包含嵌入式文件的文件,可以使用 DBObject/BasicDBObject 物件,如下所示:
// Create an embedded document
BasicDBObject comment = new BasicDBObject();
comment.put("user", "User1");
comment.put("message", "My First Comment");
comment.put("dateCreated", "20/2/2020");
comment.put("like", "0");
// create an array
List<String> tags = new ArrayList<String>();
tags.add("mongodb");
tags.add("database");
tags.add("NoSQL");
// add array and embedded documents
Document document = new Document("title", "MongoDB Overview")
.append("tags",tags)
.append("comment", comment);
示例
以下是插入包含嵌入式文件的文件並顯示它們的程式碼片段:
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// Create the collection
database.createCollection("post");
MongoCollection<Document> collection = database.getCollection("post");
List<String> tags = new ArrayList<String>();
tags.add("mongodb");
tags.add("database");
tags.add("NoSQL");
BasicDBObject comment1 = new BasicDBObject();
comment1.put("user", "User1");
comment1.put("message", "My First Comment");
comment1.put("dateCreated", "20/2/2020");
comment1.put("like", "0");
BasicDBObject comment2 = new BasicDBObject();
comment2.put("user", "User2");
comment2.put("message", "My Second Comment");
comment2.put("dateCreated", "20/2/2020");
comment2.put("like", "0");
List<DBObject> comments = new ArrayList<DBObject>();
comments.add(comment1);
comments.add(comment2);
Document document = new Document("title", "MongoDB Overview")
.append("description", "MongoDB is no SQL database")
.append("by", "tutorials point")
.append("url", "https://tutorialspoint.tw")
.append("tags",tags)
.append("comments", comments);
collection.insertOne(document);
FindIterable<Document> documents = collection.find(Filters.eq("title","MongoDB Overview"));
for (Document doc : documents) {
System.out.println(doc);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
執行後,上述程式將給出以下輸出。
輸出
Document{{_id=60b7ab7614bd6b4a14b46d47, title=MongoDB Overview,
description=MongoDB is no SQL database, by=tutorials point,
url=https://tutorialspoint.tw, tags=[mongodb, database, NoSQL],
comments=[Document{{user=User1, message=My First Comment,
dateCreated=20/2/2020, like=0}}, Document{{user=User2, message=My Second Comment,
dateCreated=20/2/2020, like=0}}]
}}
Java & MongoDB - 引用文件
要在集合中插入包含引用文件的文件,可以使用 DBRef 物件,如下所示:
// create a document
Document comment1 = new Document();
comment1.put("_id", "comment1");
comment1.put("user", "User1");
comment1.put("message", "My First Comment");
comment1.put("dateCreated", "20/2/2020");
comment1.put("like", "0");
// create a database reference
DBRef comment1Ref = new DBRef("post", comment1.get("_id"));
// insert the reference in the document
Document document = new Document("title", "Java Overview")
.append("comment1", comment1Ref);
示例
以下是插入包含引用文件的文件並顯示它們的程式碼片段:
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.DBRef;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
MongoCollection<Document> collection = database.getCollection("post");
List<String> tags = new ArrayList<String>();
tags.add("mongodb");
tags.add("database");
tags.add("NoSQL");
Document comment1 = new Document();
comment1.put("_id", "comment1");
comment1.put("user", "User1");
comment1.put("message", "My First Comment");
comment1.put("dateCreated", "20/2/2020");
comment1.put("like", "0");
DBRef comment1Ref = new DBRef("post", comment1.get("_id"));
Document comment2 = new Document();
comment2.put("_id", "comment2");
comment2.put("user", "User2");
comment2.put("message", "My Second Comment");
comment2.put("dateCreated", "20/2/2020");
comment2.put("like", "0");
DBRef comment2Ref = new DBRef("post", comment2.get("_id"));
List<Document> comments = new ArrayList<Document>();
comments.add(comment1);
comments.add(comment2);
Document document = new Document("title", "Java Overview")
.append("description", "Java is programming language")
.append("by", "tutorials point")
.append("url", "https://tutorialspoint.tw")
.append("tags",tags)
.append("comment1", comment1Ref)
.append("comment2", comment2Ref);
collection.insertMany(comments);
collection.insertOne(document);
FindIterable<Document> documents = collection.find(Filters.eq("title","Java Overview"));
for (Document doc : documents) {
System.out.println(doc);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Document{{_id=60b7b26b7671f469993fdc3c, title=Java Overview,
description=Java is programming language, by=tutorials point,
url=https://tutorialspoint.tw, tags=[mongodb, database, NoSQL],
comment1={ "$ref" : "post", "$id" : "comment1" }, comment2={ "$ref" : "post", "$id" : "comment2" }
}}
Java & MongoDB - 限制文件數
要選擇集合中給定數量的文件,可以使用 collection.find().limit() 方法選擇所需數量的集合文件。
int n = 2; // find required documents of a collection collection.find().limit(n);
示例
以下是顯示限制文件的程式碼片段:
import org.bson.Document;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
// Find two documents
FindIterable<Document> allDocuments = collection.find().limit(2);
for (Document document : allDocuments) {
System.out.println(document);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Document{{_id=60b70d426214461f10ac5c9a, First_Name=Radhika, Last_Name=Sharma, Date_Of_Birth=1995-09-26, e_mail=radhika_sharma.123@gmail.com, phone=9000012345}}
Document{{_id=60b70d426214461f10ac5c9b, First_Name=Rachel, Last_Name=Christopher, Date_Of_Birth=1990-02-16, e_mail=Rachel_Christopher.123@gmail.com, phone=9000054321}}
Java & MongoDB - 排序文件
要獲取集合中排序的文件,可以使用 collection.find().sort() 方法選擇集合的已排序文件。
// find sorted documents of a collection
collection.find().sort(new BasicDBObject("First_Name",-1));
示例
以下是顯示已排序文件的程式碼片段:
import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class Tester {
public static void main(String[] args) {
// Creating a Mongo client
MongoClient mongoClient = MongoClients.create("mongodb://:27017");
MongoDatabase database = mongoClient.getDatabase("myDb");
// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");
System.out.println("***Discending Order***");
// Sort in Descending order
FindIterable<Document> allDocuments = collection.find().sort(new BasicDBObject("First_Name",-1));
for (Document document : allDocuments) {
System.out.println(document);
}
System.out.println("***Ascending Order***");
// Sort in Ascending order
allDocuments = collection.find().sort(new BasicDBObject("First_Name",1));
for (Document document : allDocuments) {
System.out.println(document);
}
}
}
現在,讓我們編譯並執行上面的程式,如下所示。
$javac Tester.java $java Tester
輸出
執行後,上述程式將給出以下輸出。
Document{{_id=60b70d426214461f10ac5c9a, First_Name=Radhika, Last_Name=Sharma, Date_Of_Birth=1995-09-26, e_mail=radhika_sharma.123@gmail.com, phone=9000012345}}
Document{{_id=60b70d426214461f10ac5c9b, First_Name=Rachel, Last_Name=Christopher, Date_Of_Birth=1990-02-16, e_mail=Rachel_Christopher.123@gmail.com, phone=9000054321}}
Document{{_id=60b70d426214461f10ac5c9c, First_Name=Fathima, Last_Name=Sheik, Date_Of_Birth=1990-02-16, e_mail=Fathima_Sheik.123@gmail.com, phone=9000054321}}
***Ascending Order***
Document{{_id=60b70d426214461f10ac5c9c, First_Name=Fathima, Last_Name=Sheik, Date_Of_Birth=1990-02-16, e_mail=Fathima_Sheik.123@gmail.com, phone=9000054321}}
Document{{_id=60b70d426214461f10ac5c9b, First_Name=Rachel, Last_Name=Christopher, Date_Of_Birth=1990-02-16, e_mail=Rachel_Christopher.123@gmail.com, phone=9000054321}}
Document{{_id=60b70d426214461f10ac5c9a, First_Name=Radhika, Last_Name=Sharma, Date_Of_Birth=1995-09-26, e_mail=radhika_sharma.123@gmail.com, phone=9000012345}}