MongoDB is half-baked

I needed to copy data from one MongoDB database to another. MongoDB supplies the mongodump and mongorestore tools to do exactly that. I haven't had to use them lately, so the first thing I do is to check the command line options:

$ mongodump --help
Export MongoDB data to BSON files.

 -o [ --out ] arg (=dump) output directory or "-" for stdout

Great, -o - is how I write to standard output. I want to dump from here and restore to there, so mongodump here | mongorestore there is the natural solution.

How do I restore from standard input?

$ mongorestore --help
usage: mongorestore [options] [directory or filename to restore from]

Hmm, well mongodump understood -, surely mongorestore will too:

$ mongorestore -
connected to:
don't know what to do with file [-]

Okay, so mongorestore thinks - is a literal filename. The example input path is in brackets indicating that it's optional; maybe it uses standard input by default if I leave it blank?

$ mongorestore 
connected to:
don't know what to do with file [dump]

All right, I give up. Google, how do I make mongorestore read from standard input?


That's right! mongodump can write to standard output, but mongorestore cannot read from standard input. Reported two years ago, still unfixed.

You can of course dump to a file and then read from a file, and that's what I ended up doing. But… if that's the only permitted mode of operation, why support writing to standard output at all? It's just a useless and frustrating half-feature.

I poked around the MongoDB bug tracker to get a list of other "planned but not scheduled" tickets. As of this writing, an efficient representation of keys (#863), a read-only mode (#563), triggers (#124), and re-adding master-master replication (#2956) – each of them a feature I wanted – remain in that category.

For the record, Postgres95 beta 0.02 (released May 1995) supported pg_dump | psql.