NodeJS - MongoDB триггеры

Я пытаюсь разработать Log Viewer, используя DerbyJS, Racer и MongoDB. Журналы будут постоянно вставляться в базу данных MongoDB из другого источника, и моя программа просмотра журналов должна иметь возможность автоматически обновлять таблицу журналов в интерфейсе пользователя.

Мне было интересно, есть ли собственный способ прослушивания событий MongoDB, например:

 - On update
 - On delete

Они будут аналогичны, например, триггерам БД Oracle.

3 ответа

Решение

Вы можете слушать такие события, как insert, update и другие события данных в mongodb с использованием специальной коллекции с именем oplog, Вам просто нужно включить репликацию на вашем экземпляре БД, используя mongod --master или же mongod --replicaSet,

Oplog - это ограниченная коллекция, которая используется mongodb для реализации репликации. Если вы используете репликацию master/slave, вы найдете коллекцию по имени oplog.$main, если вы используете наборы реплик, он будет назван oplog.rs,

Вы можете использовать настраиваемый курсор на oplog, который должен работать.

Оплог, по сути, сам логи. Таким образом, вам может не потребоваться хранить их отдельно для целей регистрации. Однако его размер является фиксированным. Это означает, что, когда его полные, старые данные будут удалены.

Также убедитесь, что вы смотрите в local база данных, где хранятся оплоги

Вот рабочий пример со страницы wongoskin

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

Типичный подход к приложению просмотра журнала заключается в использовании настраиваемого курсора с ограниченным набором записей журнала.

Нет, https://jira.mongodb.org/browse/SERVER-124 это должно быть на стороне приложения.

Я не уверен, есть ли в node.js встроенные триггеры для MongoDB в его драйвере, но, скорее всего, нет, поэтому вам придется кодировать это в себе.

Другие вопросы по тегам