Наблюдайте, как MongoDB возвращает изменения вместе с указанным значением поля вместо возврата fullDocument - PullRequest
0 голосов
/ 21 июня 2020

Я использую watch() функцию mon go для прослушивания изменений, внесенных в replicaSet, теперь я знаю, что могу получить весь документ (fullDocument), передав { fullDocument: 'updateLookup' } методу наблюдения, например: -

someModel.watch({ fullDocument: 'updateLookup' })

Но что я действительно хочу сделать, так это получить только одно дополнительное поле, которое не изменяется при каждом новом обновлении.

Допустим, поле с именем 'user_id' , в настоящее время я получаю только updatedFields и fullDocument, которые содержат 'user_id' вместе с множеством других данных, которых я бы хотел избежать.

То, что я исследовал до сих пор, это Aggregation pipeline но не мог придумать, как это реализовать.

Кто-нибудь может помочь мне найти способ к этому?

1 Ответ

1 голос
/ 22 июня 2020

Спасибо всем за предложение, как указал @ D.SM, я успешно реализовал $ project

Вот так: -

const filter = [{"$match":{"operationType":"update"}}, {"$project":{"fullDocument.user_id": 1, "fullDocument.chats": 0, "fullDocument._id": 0, "fullDocument.first_name": 0, "fullDocument.last_name": 0 }}];

Затем передал его watch() методу

Например: -

const userDBChange = userChatModel.watch(filter, { fullDocument: 'updateLookup' });

Теперь я получаю только user_id внутри fullDocument объекта, когда operationType равно update, следовательно, уменьшая накладные расходы данных, возвращаемые из mon go

Еще раз спасибо @ D.SM и другим за попытку помочь мне;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...