Unlock seamless workflows and faster delivery with our latest releases – get the details

Delete documents by filter

By Knut Melvær

Migration script for deleting documents based on a GROQ filter

Warning

This schema is for an older version of Sanity Studio (v2), which is deprecated.

Learn how to migrate to the new Studio v3 →

deleteDocsByFilter.js

/**
 * THIS SCRIPT DELETES DATA!
 *
 * To use this script:
 * 1. Put this script in your studio-folder
 * 2. Write a GROQ filter that outputs the documents you want to delete
 * 3. Run `sanity dataset export` to backup your dataset before deleting a bunch of documents
 * 4. Run `sanity exec deleteDocsByFilter.js --with-user-token` to delete the documents
 *
 * NOTE: For the time being you should not delete more than ~1000 documents in one transaction. This will change in the future.
 * See docs:https://www.sanity.io/docs/http-api/http-mutations#deleting-multiple-documents-by-query
 */

import client from 'part:@sanity/base/client'

client
  .delete({query: '*[_type == "aDocumentType"][0...999]'})
  .then(console.log)
  .catch(console.error)

This script lets you delete documents based on a GROQ filter. It can be run in a studio folder using sanity exec deleteDocsByFilter.js --with-user-token. Note that this script deletes data, and it can be wise to test your query and export your dataset before running this.

Contributor

Other schemas by author