NodeJS – MongoDB disparadores

Estoy tratando de desarrollar un Visor de Logs usando DerbyJS, Racer y MongoDB. Los registros se insertarán en la base de datos de MongoDB por una fuente diferente de forma continua, y mi Visor de registros podrá actualizar la tabla de registros en la interfaz de usuario automáticamente.

Me preguntaba si hay una forma nativa de escuchar los eventos de MongoDB, como:

- On update - On delete 

Estos serían similares a, por ejemplo, los disparadores de Oracle DB.

Puede escuchar eventos como insert , update y otros eventos de datos en mongodb usando una colección especial llamada oplog . Solo necesita habilitar la replicación en su instancia de db utilizando mongod --master o mongod --replicaSet .

Oplog es en realidad una colección limitada que mongodb utiliza internamente para implementar la replicación. Si está utilizando la replicación maestro / esclavo, encontrará la colección con el nombre de oplog.$main , si está utilizando conjuntos de réplicas, se llamará oplog.rs .

Puede utilizar un cursor de tailable en oplog, que debería funcionar.

Oplog, en efecto, se registra a sí mismo. Por lo tanto, es posible que no necesite almacenarlos por separado para fines de registro. Sin embargo su tamaño es fijo. Es decir, cuando se eliminan sus datos completos y antiguos.

También asegúrese de que está buscando en la base de datos local , que es donde se mantienen los registros de oplogs

Aquí hay un ejemplo de trabajo de la página wiki mongoskin.

 skin = require "mongoskin" db = skin.db "localhost:27017/local" #//Cursor on oplog (a capped collection) which maintains a history for replication #//oplog can be used only when replication is enabled #//Use oplog.rs instead of oplog.$main if you are using replica set oplog = db.collection "oplog.$main" cursor = oplog.find({'ns': "icanvc.projects"},{tailable: yes, awaitData: yes}) #//Using cursor.nextObject will be slow cursor.each (err, log)-> console.error err if err console.log log if not err 

El enfoque típico de una aplicación de visor de registro es utilizar un cursor que se pueda talar con una colección con límite de entradas de registro.

No, https://jira.mongodb.org/browse/SERVER-124 tiene que ser el lado de la aplicación.

No estoy seguro de si node.js tiene activadores incorporados para MongoDB dentro de su controlador, sin embargo, lo más probable es que no, por lo que tendrá que codificar esto en usted mismo.

    Intereting Posts