观察 MongoDB 到 return 的变化以及指定的字段值而不是 returning fullDocument
Watch MongoDB to return changes along with a specified field value instead of returning fullDocument
我正在使用 mongo 的 watch()
函数来监听对 replicaSet 所做的更改,现在我知道我可以通过将 { fullDocument: 'updateLookup' }
传递给手表方法,
像 :-
someModel.watch({ fullDocument: 'updateLookup' })
但我真正想做的是,只获得一个额外的字段,每次进行新更新时都不会更改。
假设一个名为 'user_id'
的字段,目前我只得到 updatedFields
和包含 'user_id'
的 fullDocument
以及我需要的许多其他数据想避免。
目前我研究的是Aggregation pipeline
,但无法找到实现它的方法。
谁能帮我想办法解决这个问题?
感谢大家的建议,正如@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' });
现在,当 operationType
为 update
时,我只会在 fullDocument
对象中获取 user_id
,因此减少了从 mongo[= 返回的数据开销17=]
再次感谢@D.SM 和其他人对我的帮助 ;)
我正在使用 mongo 的 watch()
函数来监听对 replicaSet 所做的更改,现在我知道我可以通过将 { fullDocument: 'updateLookup' }
传递给手表方法,
像 :-
someModel.watch({ fullDocument: 'updateLookup' })
但我真正想做的是,只获得一个额外的字段,每次进行新更新时都不会更改。
假设一个名为 'user_id'
的字段,目前我只得到 updatedFields
和包含 'user_id'
的 fullDocument
以及我需要的许多其他数据想避免。
目前我研究的是Aggregation pipeline
,但无法找到实现它的方法。
谁能帮我想办法解决这个问题?
感谢大家的建议,正如@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' });
现在,当 operationType
为 update
时,我只会在 fullDocument
对象中获取 user_id
,因此减少了从 mongo[= 返回的数据开销17=]
再次感谢@D.SM 和其他人对我的帮助 ;)