Мы получаем эту ошибку:
MongoError: Unrecognized pipeline stage name: '$changeStream'
at queryCallback (/Users/alexamil/WebstormProjects/nabisco/cdt-now/node_modules/mongodb/node_modules/mongodb-core/lib/cursor.js:244:25)
at /Users/alexamil/WebstormProjects/nabisco/cdt-now/node_modules/mongodb/node_modules/mongodb-core/lib/connection/pool.js:544:18
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
У нас есть этот файл, который обновит некоторые кеши на нашем сервере:
'use strict';
import caches = require('../../models/caches');
import {Phase, Acquisition, Category, FunctionalGroup, Role, User, Workstream} from "../../models";
Acquisition.watch().on('change', function (c) {
console.info('acq change:', c);
});
Category.watch().on('change', function (c) {
console.info('category change:', c);
});
FunctionalGroup.watch().on('change', function (c) {
console.info('functional team change:', c);
});
Role.watch().on('change', function (c) {
console.info('role change:', c);
});
User.watch().on('change', function (c) {
console.info('user change:', c);
});
Workstream.watch().on('change', function (c) {
console.info('workstream change:', c);
});
мы переходим с Mongo 2.6 на Mongo 3.4, поэтому в некоторых наших данных могут отсутствовать поля.
Кто-нибудь знает, как исправить эту ошибку?
Сейчас мы используем мангустовую версию 5.0.16.
да, я подключен к набору реплик
И я не уверен, что мангуст уже полностью развернул эту функциональность. Исходя из документа, его следует использовать как генератор. Но меня действительно интересует такой вариант использования с прослушивателем событий, поскольку он довольно новый.
Ооо, мне нужно быть на Mongo 3.6, а не на Mongo 3.4
Ну ... в основном добавлено начиная с Mongo 3.6 ... Теперь работает?
Мы не можем перейти на 3.4, потому что мы застряли на 3.4 в производстве. Но у меня есть библиотека, которая читает из журнала операций (она использует потоки изменений TMK, но, похоже, работает) ... github.com/ORESoftware/oplog.rx .... нам придется использовать Model.watch () позже в будущем.





Потоки изменений появились в MongoDB 3.6. Если вы используете MyModel.watch() в mongoose при подключении к более старой версии сервера MongoDB, вы получите эту ошибку.
На основе официальный документ: Вы можете открыть поток изменений только для наборов реплик или сегментированных кластеров. Вы выполнили требование?