MongoDB-Tutorial: Kommentare speichern

MongoDB ist eine beliebte NoSQL-Datenbank, die sich perfekt für eine Aufgabe wie das Speichern von Kommentaren auf einer hoch frequentierten Website eignet. Insbesondere wenn bei dieser Verfügbarkeit und Geschwindigkeit im Vordergrund stehen. Diese Anleitung führt Sie Schitt für Schritt durch den Prozess, um mit MongoDB benutzergenerierte Kommentare zu speichern und anzuzeigen, die von einem Formular gesendet wurden, das keine Anmeldung erfordert.

Anforderungen

  • Ein Cloud Server unter Linux (CentOS 7)
  • MongoDB installiert und läuft.

Website-Kommentare sind ein ausgezeichneter Anwendungsfall für MongoDB im Vergleich zu einer traditionellen relationalen Datenbank. Die vom Benutzer eingegebenen Daten (wie der Benutzername) sind unregelmäßig, was bei einer relationalen Datenbank zu doppelten Datensatzkopfschmerzen führen kann. In Zeiten hoher Besucherzahlen, die eine hohe Performance erfordern, können Kommentare schnell und in großer Zahl eingereicht werden.

Der Hauptgrund NoSQL für diesen Zweck zu wählen ist, dass Kommentare nicht relational sind. Es ist nicht erforderlich, zusätzliche Informationen über jeden Kommentar in mehreren Tabellen zu speichern. Die einzigen Daten, die gespeichert werden müssen, sind der Benutzername, der Kommentar selbst, der Zeitstempel und (optional) die ID des Kommentars, auf den er geantwortet hat, für Websites, auf denen Kommentare im Thread-Format angezeigt werden.

Free Cloud Server Trial von IONOS

Jetzt Cloud Server kostenlos testen - Probieren Sie Ihren Cloud Server bei IONOS 30 Tage lang aus!

REST API
Unlimited Traffic
VMware Virtualisierung

Projektübersicht

Es gibt viele mögliche Ansätze für dieses Projekt. Eine der wichtigsten Fragen die sich stelt lautet, ob jeder Kommentar als eigenes Dokument gespeichert werden sollte, oder ob alle Kommentare in ein einziges Dokument einfließen sollten, das mit jedem neuen Kommentar aktualisiert wird.

Obwohl es einige Vorteile hat, alle Kommentare in einem einzigen Dokument zu speichern, hat die Praxis mit MongoDB gezeigt, dass es sich empfiehlt Situationen zu vermeiden in denen ein Dokument im Laufe der Zeit an Größe zunimmt. Außerdem kann das Speichern eines Dokumentes auf der Fetplatte mit zunehmender Größe zu Problemen beim Lesen/Schreiben führen.

Für dieses Tutorial werden wir jeden Kommentar als separates Dokument speichern.

Der Befehl zum Einfügen eines Kommentars in die Datenbank lautet:

db.comments.insert({
    'parent_article_id': [ID of parent article],
    'posted': ISODate("[timestamp]"),
    'author': '[Author's name]',
    'comment_body': '[Text of comment]' })
  • parent_article_id: Die ID des Artikels, in dem der Kommentar hinterlassen wurde.
  • Autor: Der Name des Autors (ein Freiformfeld, nicht authentifiziert).
  • comment_body: Der Text des Kommentars

Datenbank erstellen und einen Kommentar einfügen

Rufen Sie die Kommandozeilen-Shell von MongoDB auf:

mongodb

Erstellen Sie die Datenbank comment_tracker für das Projekt:

use comment_tracker

Füge den ersten Kommentar ein:

db.comments.insert({
    'parent_article_id': 1,
    'posted': ISODate("2017-03-22T19:53:59.526+0000"),
    'author': 'Alice',
    'comment_body': 'Test comment' })

MongoDB antwortet mit der Meldung, dass der Datensatz eingefügt wurde:

>     db.comments.insert({
...         'parent_article_id': 1,
...         'posted': ISODate("2017-03-22T19:53:59.526+0000"),
...         'author': 'Alice',
...         'comment_body': 'Test comment' })
WriteResult({ "nInserted" : 1 })

Wir können diesen Kommentar (und alle Inhalte der Datenbank) mit dem Befehl ansehen:

db.comments.find()

Dies gibt den einzigen Kommentar zurück, den wir bisher eingefügt haben:

{ "_id" : ObjectId("58d2df9d8da74c010860e576"), "parent_article_id" : 1, "posted" : ISODate("2017-03-22T19:53:59.526Z"), "author" : "Alice", "comment_body" : "Test comment" }

Füge einen zweiten Kommentar hinzu, um gute Ergebnisse zu erzielen:

db.comments.insert({
    'parent_article_id': "1",
    'posted': ISODate("2017-03-22T22:11:08.526+0000"),
    'author': `Bob`,
    'comment_body': 'Hello everyone.' })

Um alle Kommentare zu einem bestimmten Artikel anzuzeigen:

db.comments.find({ 'parent_article_id': "1" })

Auf dem Laufenden bleiben?

Jetzt für unseren Newsletter anmelden und gratis Online-Marketing Whitepaper für lokale Anbieter sichern!