updateLookup in Change Streams Causing Full Collection Scan

Hi Team,

I’m using MongoDB change streams with the fullDocument: “updateLookup” option enabled to capture updates along with the latest version of the modified documents.

However, I’ve noticed that this is triggering a full collection scan,I looked into this issue and, based on what I found online, it seems that MongoDB should use the _id index to fetch only the specific document during the updateLookup phase. However, in my case, it appears that a full collection scan is occurring instead.

Could you please help me investigate why this is happening?

Here is the execution plan

“originatingCommand”: {
“aggregate”: “Users”,
“pipeline”: [
{
“$changeStream”: {
“fullDocument”: “updateLookup”,
“resumeAfter”: {
“_data”: “8267FD345D000000022B0229296E04”
}
}
}
],
“cursor”: {},
“$db”: “DbName”,
“$readPreference”: {
“mode”: “primary”
},
“lsid”: {
“id”: {
“$binary”: {
“base64”: “yJx3su/5Qq+XBXuACQjfkQ==”,
“subType”: “04”
}
}
},
“$clusterTime”: {
“clusterTime”: {
“$timestamp”: {
“t”: 1744647293,
“i”: 7
}
},
“signature”: {
“hash”: {
“$binary”: {
“base64”: “ajtAlKHcYghu3Oi+TtWq12ua0gU=”,
“subType”: “00”
}
},
“keyId”: 7438286996167983143
}
}
},
“planSummary”: “COLLSCAN”,
“cursorid”: 5192227766147311091,
“keysExamined”: 0,
“docsExamined”: 4241,
“nBatches”: 1,
“numYields”: 9533,
“nreturned”: 0,
“queryHash”: “51A933B1”,
“reslen”: 315,

Thanks,
Sriram