Java Mongodb 简明教程

Java & MongoDB - Quick Guide

Java & MongoDB - Overview

MongoDB 开发者团队提供了适用于 Java 的 MongoDB 驱动程序,并为此准备了各种资源。

使用 Java 连接到 MongoDB 的第一步是,将 mongodb 驱动程序放入 Java 类路径,然后使用 mongodb API 连接到数据库。

Connecting to MongoDB database

假设已在本机安装 MongoDB,并且使用的是默认端口,则可以使用以下语法连接到 MongoDB 数据库。

MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");

因为 MongoClient 采用了各种默认设置,因此也可以按照以下方式使用它。

MongoClient mongoClient = MongoClients.create();

Creating/Connecting to Database

实例化 mongoClient 后,可以使用其 getDatabase() 方法获取与数据库的连接。

MongoDatabase database = mongoClient.getDatabase("myDb");

如果数据库不存在,则上述命令会创建数据库。

后续章节中,我们将使用 Java 演示基于 MongoDB 的各种操作。

Java & MongoDB - Environment Setup

Install MongoDB database

按照 MongoDB - Environment 中的说明进行 MongoDB 安装

Install Java

可以免费从以下链接下载 Java SE −

你可以根据自己的操作系统下载一个版本。

按照说明下载 Java,并运行 .exe 在你的计算机上安装 Java。在计算机上安装 Java 后,你需要设置环境变量来指向正确的安装目录。

Setting Up the Path for Windows 2000/XP

假设你已将 Java 安装在 c:\Program Files\java\jdk 目录中 −

  1. 右键单击“我的电脑”,然后选择“属性”。

  2. 单击“高级”选项卡下的“环境变量”按钮。

  3. 现在,更改“路径”变量,以便其也包含指向 Java 可执行文件的路径。例如,如果路径当前设置为“C:\WINDOWS\SYSTEM32”,则将路径更改为“C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin”。

Setting Up the Path for Windows 95/98/ME

假设你已将 Java 安装在 c:\Program Files\java\jdk 目录中 −

  1. 编辑“C:\autoexec.bat”文件,并在末尾添加以下行 - SET PATH=%PATH%;C:\Program Files\java\jdk\bin

Setting Up the Path for Linux, UNIX, Solaris, FreeBSD

环境变量 PATH 应设置为指向已安装 Java 二进制文件的位置。如果你在这方面遇到问题,请参阅 shell 文档。

例如,如果你使用 bash 作为 shell,则需要在“‘.bashrc: export PATH=/path/to/java:$PATH’”的末尾添加以下行

要编写 Java 程序,你需要一个文本编辑器。市场上有更复杂的 IDE 可用。但目前,你可以考虑以下选项之一:

  1. Notepad − 在 Windows 机器上,你可以使用任何简单的文本编辑器,例如记事本(本教程推荐)或 TextPad。

  2. Netbeans − 这是一款开源免费的 Java IDE。可以从 https://netbeans.org/index.html 下载。

  3. Eclipse − 这是由 Eclipse 开源社区开发的另一款 Java IDE,可以从 www.eclipse.org/ 下载。

Java MongoDB Driver

  1. 你需要下载 jar mongo-java-driver.jar 。请务必下载这些 jar 文件的最新版本。

  2. 你需要将下载的 jar 文件包括在自己的类路径中。

  3. 我们正在使用 mongo-java-driver-3.12.8.jar 运行示例。

Java & MongoDB - Connecting Database

要连接数据库,你需要指定数据库名称;如果数据库不存在,则 MongoDB 会自动创建它。

MongoDatabase database = mongo.getDatabase("myDb");

Example

以下是连接数据库的代码片段:

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

Credentials ::MongoCredential{mechanism=null, userName='sampleUser', source='myDb', password=<hidden>, mechanismProperties=<hidden>}

Java & MongoDB - Show Databases

要显示数据库,可以使用 MongoClient.listDatabaseNames() 方法获取所有数据库的名字。

MongoIterable<String> list = mongoClient.listDatabaseNames();
for (String name : list) {
   System.out.println(name);
}

由于我们在 Connect Database 章节中创建了一个空数据库,我们需要插入一个文档,以便在 MongoDB 数据库列表中显示它。

Example

以下是列出数据库的代码片段 −

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://localhost: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", "http://www.tutorialspoint.com/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

Output

在执行上述程序时,您将得到以下输出。

admin
config
local
myDb

Java & MongoDB - Drop Database

若要删除数据库,可以使用 MongoDatabse.drop() 方法来删除选定的数据库。

// Creating a Mongo client
MongoClient mongoClient = MongoClients.create();

// connect the database
MongoDatabase database = mongoClient.getDatabase("myDb");

// drop the database
database.drop();

Example

以下是删除数据库的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

Database dropped.
admin
config
local

Java & MongoDB - Create Collection

若要删除数据库,可以使用 MongoDatabse.createCollection() 方法在数据库中创建集合。

// Creating a Mongo client
MongoClient mongoClient = MongoClients.create();

// Connect the database
MongoDatabase database = mongoClient.getDatabase("myDb");

// Create the collection
database.createCollection("sampleCollection");

Example

以下是创建集合的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

Collection created.

Java & MongoDB - Drop Collection

若要删除数据库,可以使用 collection.drop() 方法删除数据库中的集合。

// Get the collection
MongoCollection<Document> collection = database.getCollection("sampleCollection");

// delete the collection
collection.drop();

Example

以下是删除集合的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

Collection dropped.

Java & MongoDB - Display Collections

若要显示集合列表,可以使用 database.listCollectionNames() 方法获取数据库中集合名称的列表。

MongoIterable<String> collections = database.listCollectionNames();

Example

以下是显示集合列表的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

sampleCollection

Java & MongoDB - Insert Document

要插入一个文档到某个集合中,您可以使用 collection.insertOne()collection.insertMany() 方法将文档插入集合。

// insert a single document
collection.insertOne(document);

// insert multiple documents
collection.insertMany(documents);

Example

以下是将文档插入集合的代码段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

Documents inserted.

Java & MongoDB - Select Document

若要选择一个集合中的文档,可以使用 collection.find()collection.find(filter) 方法选择一个集合的文档。

// find all documents of a collection
collection.find();

// find document(s) fulfiling the filter criteria
collection.find(filter);

Example

以下是显示选定文档的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

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 - Update Document

要更新集合中的一个文档,您可以使用 collection.updateOne() 方法来更新集合中的一个特定文档。

collection.updateOne(filter,update);

Example

以下是用来更新和显示更新后文档的代码段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

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 - Delete Document

若要删除一个集合中的文档,可以使用 collection.deleteOne() 方法删除一个集合中的特定文档。

collection.deleteOne(filter);

Example

以下是删除一个文档并显示其余文档的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

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 - Embedded Documents

要将包含嵌入式文档的文档插入集合中,您可以使用 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);

Example

以下是用来插入包含嵌入式文档的文档并对其进行显示的代码段 −

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://localhost: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", "http://www.tutorialspoint.com")
         .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

在执行上述程序时,您将得到以下输出。

Output

Document{{_id=60b7ab7614bd6b4a14b46d47, title=MongoDB Overview,
   description=MongoDB is no SQL database, by=tutorials point,
   url=http://www.tutorialspoint.com, 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 - Referenced Documents

若要插入一个带有引用文档的文档到一个集合中,可以使用 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);

Example

以下是插入一个带有引用文档的文档并显示它们的代码片段 −

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://localhost: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", "http://www.tutorialspoint.com")
         .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

Output

在执行上述程序时,您将得到以下输出。

Document{{_id=60b7b26b7671f469993fdc3c, title=Java Overview,
   description=Java is programming language, by=tutorials point,
   url=http://www.tutorialspoint.com, tags=[mongodb, database, NoSQL],
   comment1={ "$ref" : "post", "$id" : "comment1" }, comment2={ "$ref" : "post", "$id" : "comment2" }
}}

Java & MongoDB - Limiting Documents

若要选择一个集合中给定数量的文档,可以使用 collection.find().limit() 方法选择所需的文档数。

int n = 2;

// find required documents of a collection
collection.find().limit(n);

Example

以下是显示数量有限的文档的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

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 - Sorting Documents

若要获取一个集合中已排序的文档,可以使用 collection.find().sort() 方法选择一个集合的已排序文档。

// find sorted documents of a collection
collection.find().sort(new BasicDBObject("First_Name",-1));

Example

以下是显示已排序文档的代码片段 −

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://localhost: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

Output

在执行上述程序时,您将得到以下输出。

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}}