I did a quick test using ~25GB of data derived from the example document you provided.
This is the output of db.test.stats() of the collection using the standard snappy compression:
ns: 'test.test',
size: Long("27070806709"),
count: 17166000,
avgObjSize: 1577,
storageSize: Long("10205900800"),
and this is the output of db.testzstd.stats() of the collection configured to use zstd:
ns: 'test.testzstd',
size: Long("27070806709"),
count: 17166000,
avgObjSize: 1577,
storageSize: Long("6124052480"),
So the snappy-compressed collection uses about 9.5GB of storage, and the zstd-compressed collection (using the standard compression level) uses about 5.7GB. I’m using MongoDB 5.0.9.
So far I think it’s working for me, where zstd clearly shows an advantage.
Could you double check the experiment using the latest MongoDB version? E.g. for 5.0, please use 5.0.9, and for 4.2 please use 4.2.21
Best regards
Kevin