MongoDb: драйвер Java
Вступление
MongoDB обеспечивает связь для клиентских приложений Java с использованием драйвера Java. Использовать драйвер Java просто, просто включите драйвер jar mongo.jar в ваш путь к классам. Вы получите больше информации о Java API здесь .
Загрузите mongo.jar отсюда .
JDBC API может делать следующие вещи:
- Установите соединение с базой данных или получите доступ к любому источнику табличных данных.
- Отправить различные заявления MongoDB.
- Получать и обрабатывать результаты, полученные из базы данных.
Создание соединения
Вот некоторые из распространенных способов подключения к серверу MongoDB:
Чтобы напрямую подключиться к одному серверу MongoDB:
MongoClient mongoClient = new MongoClient();
// or
MongoClient mongoClient = new MongoClient( "localhost" );
// or
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
Чтобы подключиться к набору реплик с автоматическим обнаружением первичного сервера, укажите начальный список членов:
MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017),
new ServerAddress("localhost", 27018),
new ServerAddress("localhost", 27019)));
Аутентификация (необязательно):
MongoDB может работать в безопасном режиме, где доступ к базам данных контролируется с помощью аутентификации. При запуске в этом режиме любое клиентское приложение должно предоставить список учетных данных, которые будут использоваться для проверки подлинности. В драйвере Java вы просто предоставляете учетные данные при создании экземпляра MongoClient:
MongoCredential credential = MongoCredential.createMongoCRCredential(userName, database, password);
MongoClient mongoClient = new MongoClient(new ServerAddress(), Arrays.asList(credential));
Подключение к базе данных MongoDB:
Следующий код показывает, как создать соединение с базой данных MongoDB. Если базы данных нет, MongoDB создаст ее для вас.
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.util.List;
import java.util.Set;
import static java.util.concurrent.TimeUnit.SECONDS;
public class mongodb_connection{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
System.out.println("Database Connection Successful!");
DB db = mongoClient.getDB( "testdb" );
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection.java F: / java-mongodb> java mongodb_connection Подключение к базе данных успешно!
Вставить документ
Когда у вас есть объект коллекции, вы можете вставить документы в коллекцию. Например, давайте создадим студенческий документ, который в JSON будет представлен как:
{
"name" : "Arun",
"class" : 'V',
"rollno" : 1
}
Здесь мы использовали класс BasicDBObject для создания документа, а затем просто вставляем его в коллекцию, используя метод insert ().
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;
public class mongodb_connection_insert{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
System.out.println("Database Connection Successful!");
DBCollection collec = db.getCollection("stucollec");
BasicDBObject doc = new BasicDBObject("student", "testdb")
.append("name", "Arun")
.append("class", 'V')
.append("rollno", 1);
collec.insert(doc);
System.out.println("Document is inserted successfully");
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> java mongodb_connection_insert Подключение к базе данных успешно! Документ успешно вставлен
Найти документ
Чтобы показать или найти документ просто, используйте операцию findOne (), чтобы получить первый документ в коллекции. Этот метод возвращает один документ, и он полезен для вещей, где есть только один документ или вас интересует только первый.
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;
public class mongodb_connection_find_document{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
System.out.println("Database Connection Successful!");
DBCollection collec = db.getCollection("stucollec");
DBObject myDoc = collec.findOne();
System.out.println(myDoc);
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> java mongodb_connection_find_document Подключение к базе данных успешно! {"_id": {"$ oid": "54897b3309b478e666780749"}, "student": "testdb", "name": "Arun", "class": "V", "rollno": 1}
Давайте вставим еще две записи:
{
"name" : "David",
"class" : 'V',
"rollno" : 2
}
{
"name" : "Shekhar",
"class" : 'V',
"rollno" : 3
}
Использование курсора для извлечения всех документов
Чтобы получить все документы в коллекции, мы использовали метод find (). Метод find () возвращает объект DBCursor, который позволяет нам перебирать набор документов, соответствующих нашему запросу. Итак, чтобы запросить все документы и распечатать их:
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;
public class mongodb_connection_find_all_documents{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
DBCollection collec = db.getCollection("stucollec");
DBCursor cursor = collec.find();
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_find_all_documents.java F: / java-mongodb> java mongodb_connection_find_all_documents {"_id": {"$ oid": "54897b3309b478e666780749"}, "student": "testdb", "name": "Arun", "class": "V", "rollno": 1} {"_id": {"$ oid": "5489890c09b4351818c6e73f"}, "student": "testdb", "name": "David", "class": "V", "rollno": 2} {"_id": {"$ oid": "54898b4309b45fce267b9fbe"}, "student": "testdb", "name": "Shekhar", "class": "V", "rollno": 3}
Запрос одного документа
Мы можем создать запрос для передачи в метод find (), чтобы получить подмножество документов в нашей коллекции. Например, если бы мы хотели найти документ, для которого значение поля "rollno" равно 2, мы бы сделали следующее;
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;
public class mongodb_connection_single_document_query{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
DBCollection collec = db.getCollection("stucollec");
BasicDBObject query = new BasicDBObject("rollno", 2);
DBCursor cursor = collec.find();
cursor = collec.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_single_document_query.java F: / java-mongodb> java mongodb_connection_single_document_query {"_id": {"$ oid": "5489890c09b4351818c6e73f"}, "student": "testdb", "name": "David", "class": "V", "rollno": 2}
Запрос нескольких документов
Мы можем использовать запрос, чтобы получить набор документов из нашей коллекции. Например, если вы хотите получить все документы, где «rollno»> = 2, мы можем написать:
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;
public class mongodb_connection_multiple_documents_query{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
DBCollection collec = db.getCollection("stucollec");
// find all where rollno>=2
BasicDBObject query = new BasicDBObject("rollno", new BasicDBObject("$gte", 2));
DBCursor cursor = collec.find(query);
try {
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_multiple_documents_query.java F: / java-mongodb> java mongodb_connection_multiple_documents_query {"_id": {"$ oid": "5489890c09b4351818c6e73f"}, "student": "testdb", "name": "David", "class": "V", "rollno": 2} {"_id": {"$ oid": "54898b4309b45fce267b9fbe"}, "student": "testdb", "name": "Shekhar", "class": "V", "rollno": 3}
Обновить документ
Следующая программа показывает, как использовать $ set в java-программе для обновления одного соответствующего документа.
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;
import java.util.Arrays;
public class mongodb_connection_update_document{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
DBCollection collec = db.getCollection("stucollec");
DBObject query = new BasicDBObject("name", "Shekhar");
DBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject("rollno", 13));
WriteResult result = collec.update(query, update);
DBCursor cursor = collec.find();
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_update_document.java F: / java-mongodb> java mongodb_connection_update_document {"_id": {"$ oid": "54897b3309b478e666780749"}, "student": "testdb", "name": "Arun", "class": "V", "rollno": 1} {"_id": {"$ oid": "5489890c09b4351818c6e73f"}, "student": "testdb", "name": "David", "class": "V", "rollno": 2} {"_id": {"$ oid": "54898b4309b45fce267b9fbe"}, "student": "testdb", "name": "Shekhar", "class": "V", "rollno": 13}
Удалить документ
Следующая программа показывает, как удалить один соответствующий документ.
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;
import java.util.Arrays;
public class mongodb_connection_delete_document{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
DBCollection collec = db.getCollection("stucollec");
DBObject query = new BasicDBObject("rollno", 13);
WriteResult result = collec.remove(query);
System.out.println("Number of documents are deleted : " + result.getN());
DBCursor cursor = collec.find();
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_delete_document.java F: / java-mongodb> java mongodb_connection_delete_document Количество документов удалено: 1 {"_id": {"$ oid": "54897b3309b478e666780749"}, "student": "testdb", "name": "Arun", "class": "V", "rollno": 1} {"_id": {"$ oid": "5489890c09b4351818c6e73f"}, "student": "testdb", "name": "David", "class": "V", "rollno": 2}
Список коллекции
Следующая программа возвращает список доступных коллекций в базе данных:
Примечание. Коллекция system.indexes создается автоматически и содержит список всех индексов в базе данных, и к ней нельзя обращаться напрямую.
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;
import java.util.Arrays;
public class mongodb_connection_list_of_collection{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
for (String s : db.getCollectionNames()) {
System.out.println(s);
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_list_of_collection.java F: / java-mongodb> java mongodb_connection_list_of_collection stucollec system.indexes
Оставить коллекцию
Вы можете удалить коллекцию, используя метод drop ():
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;
import java.util.Arrays;
public class mongodb_connection_drop_a_collection{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "testdb" );
DBCollection coll = db.getCollection("stucollec");
coll.drop();
System.out.println(db.getCollectionNames());
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_drop_a_collection.java F: / java-mongodb> java mongodb_connection_drop_a_collection [system.indexes]
Удалить базу данных
Вы можете удалить коллекцию, используя метод drop ():
Код:
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;
import java.util.Arrays;
public class mongodb_connection_drop_a_database{
public static void main( String args[] ){
try{
MongoClient mongoClient = new MongoClient();
mongoClient.dropDatabase("testdb");
for (String s : mongoClient.getDatabaseNames()) {
System.out.println(s);
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Выход :
F: / java-mongodb> javac mongodb_connection_drop_a_database.java F: / java-mongodb> java mongodb_connection_drop_a_collection [system.indexes]
Предыдущий: РЕЗЕРВНОЕ КОПИРОВАНИЕ
Далее: ВОДИТЕЛЬ Python
Новый контент: Composer: менеджер зависимостей для PHP , R программирования