von Marc-David Militz
Forum: Neuigkeiten
Das Konzept von Tail ist ganz ähnlich den "tail" Befehl aus der UNIX/Linux Welt. Der Datenbankcursor liefert ein initales Abfrageergebnis, bleibt dann aber offen und liefert weitere Ergebnisse, sobald neue Datensätze den Bedingungen der Abfrage entsprechen. Tail verwendet für die Abfrage keine Indexe. MongoDB selbst verwendet intern einen "Tailable Cursor" auf dem Oplog um die Replikation zu realisieren.
var cursor = db.chat.find( { chatnum: 1 } ).noCursorTimeout().tailable( { isAwaitData : true } )
"Change Streams" sind weniger komplex in der Verwendung als ein "Tailable Cursor". Ein Change Stream kann auf eine Collection gesetzt werden und liefert immer ein Ergebnis solbald sich ein Datensatz in der Collection ändert. Der Stream Output kann, soweit das gewünscht ist mit einigen Funktionen wie $match, $project, $addFiels, $replaceRoot oder $redact beeinflusst werden. "Change Streams" sind damit ideal für den Einsatzzwecke im Internet of Things (IoT).
var watchCursor = db.getSiblingDB("data").sensors.watch()
https://docs.mongodb.com/manual/core/tailable-cursors/
https://docs.mongodb.com/manual/changeStreams/