Heim Datenbank MySQL-Tutorial [MongoDB学习日志]Java对MongoDB的CRUD操作

[MongoDB学习日志]Java对MongoDB的CRUD操作

Jun 07, 2016 pm 05:37 PM
java jdbc mongodb

说起Java操作数据库自然会想到Sun的知名品牌JDBC,对于MongoDB这样的NoSQL数据库,暂时没有像JDBC这样的标准。这篇文章中对目前的形势做了分析和憧憬http://www.

  说起Java操作数据库自然会想到Sun的知名品牌JDBC,,对于MongoDB这样的NoSQL数据库,暂时没有像JDBC这样的标准。

  这篇文章中对目前的形势做了分析和憧憬


  回到正题记录下熟悉MongoDB为Java语言提供的操作接口mongo-java-driver.jar


  1.基本的根基不变,连接数据库

  2.基本的数据库操作不变,CRUD

  3.变化的是提供的接口,实现类名,操作对象大不相同

  4.变化的是没有标准的Java操作MongoDB的标准API


  MongoDB提供的Java操作API可以说是对Mongo数据库命令的Java翻译,熟悉Mongo命令,熟悉Java操作数据库的基本思路,很容易掌握基本操作。


  •   数据库连接

    package com.im; public final class SystemConstant { public static final class Configure { public static final String HOST = "127.0.0.1"; public static final int PORT = 27017; public static final String USERNAME = ""; public static final String PASSWORD = ""; public static final String DATABASE = "im"; } }package com.im; import java.net.UnknownHostException; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MongoFactory { private static MongoFactory mongoFactory; private MongoFactory() { } public static MongoFactory getInstance() { if (mongoFactory == null) { mongoFactory = new MongoFactory(); } return mongoFactory; } public Mongo getMongo() { Mongo mongo = null; try { mongo = new Mongo(SystemConstant.Configure.HOST, SystemConstant.Configure.PORT); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } return mongo; } }

  •       数据库链接少不了的主机名,端口号,数据库名称。上面代码中的Mongo对象就相当与Connection对象。


  • 数据库的操作

    下面的每个方法代表一个方面的测试

    测试类初始化方法:

    private static BaseDao dao; @BeforeClass public static void start() { dao = new BaseDao("users","uf"); }

    关于BaseDao是对Mongo操作数据库的基本常用的方法做了封装的一个DAO对象,代码会在本文末尾附上。


  •     插入:


    // 添加一条记录 public void test1() { BasicDBObject jo = new BasicDBObject(); jo.put("_id", "00001"); jo.put("name", "Tomcat"); jo.put("age", 22); jo.put("interest", new String[] { "swimming", "Taiji", "football" }); int actual = dao.insert(jo); System.out.println(actual); Assert.assertEquals(1, actual); }


    // 添加多条记录 public void test2() { int actual = 0; int size = 0; for (int i = 2; i


       BasicDBObject对象是Mongo的BSONObject的基本实现类,而BSONObject对象正是Key-Value的形式的Map保存到数据库中。

       基本的查询(主键查询,查询集合,条件查询)

    // 查询指定编号的记录 public void test3() { BasicDBObject query = new BasicDBObject(); query.put("_id", "00001"); List dboList = dao.query(query); System.out.println(dboList.get(0).toString()); Assert.assertEquals(1, dboList.size()); } // 模糊查询,统计记录结果数量 public void test4() { BasicDBObject query = new BasicDBObject(); query.put("interest", new String[] { "swimming", "Taiji" }); long count = dao.getCount(query); Assert.assertEquals(9, count); } // 模块查询,查询结果集合 public void test5() { BasicDBObject query = new BasicDBObject(); query.put("interest", new String[] { "swimming", "Taiji" }); List dboList = dao.query(query); for (DBObject jo : dboList) { System.out.println(jo.toString()); } Assert.assertEquals(9, dboList.size()); }

      下面是插入数据后的数据库的数据情况,图中数据是各种测试后的数据,不完全对于每个方法的操作后数据库情况。

    更新操作

         Mongo更新操作要准备两个BasicDBObject对象,一个是要更新的对象,另一个是更新后的对象。

    // 更新指定记录的信息 public void test6() { BasicDBObject query = new BasicDBObject(); query.put("_id", "00001"); BasicDBObject jo = new BasicDBObject(); jo.put("_id", "00001"); jo.put("name", "Jackson"); jo.put("interest", new String[] { "Song", "Taiji", "Running" }); jo.put("firends", new BasicDBObject[] { (BasicDBObject) dao.query( new BasicDBObject("_id", "00002")).get(0), (BasicDBObject) dao.query( new BasicDBObject("_id", "00002")).get(0) }); int actual = dao.update(query, jo); Assert.assertEquals(1, actual); }

    删除操作

    // 删除指定记录 public void test7() { BasicDBObject query = new BasicDBObject(); query.put("_id", "000010"); dao.delete(query); List dboList = dao.query(query); Assert.assertEquals(0, dboList.size()); }


      Mongo删除比较容易,指定一个BasicDBObject作为匹配条件,将删除匹配的所有记录(文档对象)。

    多条件查询

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

    Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

    Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Feb 07, 2025 pm 12:11 PM

    Spring Boot vereinfacht die Schaffung robuster, skalierbarer und produktionsbereiteter Java-Anwendungen, wodurch die Java-Entwicklung revolutioniert wird. Der Ansatz "Übereinkommen über Konfiguration", der dem Feder -Ökosystem inhärent ist, minimiert das manuelle Setup, Allo

    So konfigurieren Sie die automatische Expansion von MongoDB auf Debian So konfigurieren Sie die automatische Expansion von MongoDB auf Debian Apr 02, 2025 am 07:36 AM

    In diesem Artikel wird vorgestellt, wie MongoDB im Debian -System konfiguriert wird, um eine automatische Expansion zu erzielen. Die Hauptschritte umfassen das Einrichten der MongoDB -Replikat -Set und die Überwachung des Speicherplatzes. 1. MongoDB Installation Erstens stellen Sie sicher, dass MongoDB im Debian -System installiert ist. Installieren Sie den folgenden Befehl: sudoaptupdatesudoaptinstall-emongoDB-org 2. Konfigurieren von MongoDB Replika-Set MongoDB Replikate sorgt für eine hohe Verfügbarkeit und Datenreduktion, was die Grundlage für die Erreichung der automatischen Kapazitätserweiterung darstellt. Start MongoDB Service: SudosystemctlstartMongodsudosysys

    Wie Sie eine hohe Verfügbarkeit von MongoDB bei Debian gewährleisten Wie Sie eine hohe Verfügbarkeit von MongoDB bei Debian gewährleisten Apr 02, 2025 am 07:21 AM

    In diesem Artikel wird beschrieben, wie man eine hoch verfügbare MongoDB -Datenbank für ein Debian -System erstellt. Wir werden mehrere Möglichkeiten untersuchen, um sicherzustellen, dass die Datensicherheit und -Dienste weiter funktionieren. Schlüsselstrategie: ReplicaSet: Replicaset: Verwenden Sie Replikaten, um Datenreduktion und automatisches Failover zu erreichen. Wenn ein Master -Knoten fehlschlägt, wählt der Replikate -Set automatisch einen neuen Masterknoten, um die kontinuierliche Verfügbarkeit des Dienstes zu gewährleisten. Datensicherung und Wiederherstellung: Verwenden Sie den Befehl mongodump regelmäßig, um die Datenbank zu sichern und effektive Wiederherstellungsstrategien zu formulieren, um das Risiko eines Datenverlusts zu behandeln. Überwachung und Alarme: Überwachungsinstrumente (wie Prometheus, Grafana) bereitstellen, um den laufenden Status von MongoDB in Echtzeit zu überwachen, und

    Vergleiche zwei ArrayList in Java Vergleiche zwei ArrayList in Java Feb 07, 2025 pm 12:03 PM

    In diesem Leitfaden werden mehrere Java -Methoden zum Vergleich von zwei Arraylisten untersucht. Erfolgreicher Vergleich erfordert, dass beide Listen die gleiche Größe haben und identische Elemente enthalten. Methoden zum Vergleich von Arraylisten in Java Für den Vergleich von AR existieren mehrere Ansätze

    PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

    PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

    Großes Update von Pi Coin: Die PI Bank kommt! Großes Update von Pi Coin: Die PI Bank kommt! Mar 03, 2025 pm 06:18 PM

    Pinetwork startet Pibank, eine revolutionäre Mobile -Banking -Plattform! PiNetwork today released a major update on Elmahrosa (Face) PIMISRBank, referred to as PiBank, which perfectly integrates traditional banking services with PiNetwork cryptocurrency functions to realize the atomic exchange of fiat currencies and cryptocurrencies (supports the swap between fiat currencies such as the US dollar, euro, and Indonesian rupiah with cryptocurrencies such as PiCoin, USDT, and USDC). Was ist der Charme von Pibank? Lass uns herausfinden! Die Hauptfunktionen von Pibank: One-Stop-Management von Bankkonten und Kryptowährungsvermögen. Unterstützen Sie Echtzeittransaktionen und übernehmen Sie Biospezies

    Rückgabe gleicher Zahlen aus einem Stapel in Java Rückgabe gleicher Zahlen aus einem Stapel in Java Feb 07, 2025 pm 12:07 PM

    Stapel in Java Ein Stack ist eine LESTO-Datenstruktur (Last-In-First-Out). Wie unten gezeigt, ist das letzte Buch auf dem Stapel das erste entfernt, und das erste Buch, das auf dem Stapel platziert ist, ist das letzte entfernt. In Java können Sie einen ganzzahligen Stack erstellen, indem Sie das Paket von Java.util.stack importieren und den Stack () -Konstruktor anrufen. Sie können die PUSP () -Methode verwenden, um ganzzahlige Objekte in den Stapel zu drücken. Das folgende Code -Snippet liefert ein Beispiel. Beispiel Hier ist ein Beispielprogramm: import Java.util.stack; öffentliche Klassen -Tests { Öffentliche statische Leere Haupt

    See all articles