DEV Community

GreggHume
GreggHume

Posted on • Edited on

5

MongoDB: How to get fullDocument from changeStream when a document is deleted

In order to get the full document in a watcher after deleting the document you need to enable collMod on the collection. See the below 4 steps.

1.Download mongoshell https://www.mongodb.com/try/download/shell

2.Run mongoshell and paste your connection string with an admin user and press enter (create a temporary admin if you need to) Looks like this:

mongodb+srv://user:QkKvrDtL0yZFERGA@showspace-cluster.1yyql9v.mongodb.net/my-db`
Enter fullscreen mode Exit fullscreen mode

3.In mongoshell run the following command to change the 'collMod' for your collection - swop out my collection 'ProductReview' for your collection

db.runCommand({collMod: "ProductReview", changeStreamPreAndPostImages: {enabled: true}})
Enter fullscreen mode Exit fullscreen mode

4.Now in your app you can setup a change stream and access the deleted document like so (the below code is nodejs)

const client = new MongoClient(env.DATABASE_URL);
const database = client.db("my_database");
const reviews = database.collection("ProductReview");

// 'fullDocumentBeforeChange' is the magic here
const changeStream = reviews.watch([], { 
  fullDocument: "updateLookup", 
  fullDocumentBeforeChange: "required" 
});

changeStream.on("change", async (event) => {
  let document;

  if (event.operationType === 'delete') {
    document = event.fullDocumentBeforeChange;
  } else {
    document = event.fullDocument;
  }

  // do some stuff with the document
});   
Enter fullscreen mode Exit fullscreen mode

Documentation:
https://www.mongodb.com/docs/v6.0/reference/operator/aggregation/changeStream/

Related questions:

Image of Docusign

Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs