mongocat¶
Cli tool to interact with mongodb
- Free software: MIT license
- Documentation: https://mongocat.readthedocs.io.
Overview¶
Write new documents into collection.
$ export MONGOCAT_URL='mongodb://<username>:<password>@your-mongo-host'
$ mongocat -W -d tensim graphs
foo: bar # enter your object in minified yaml
5ec0a27324ec53bd2464c074 # prints object id on success
foo: baz
5ec0a27a24ec53bd2464c075
Read documents from a collection
$ mongocat -R -d tensim graphs
{'_id': ObjectId('5ec0a27324ec53bd2464c074'), 'foo': 'bar'}
{'_id': ObjectId('5ec0a27a24ec53bd2464c075'), 'foo': 'baz'}
Find documents in a collection
$ mongocat -F -d tensim graphs --query '{"foo":{"$eq":"bar"}}'
{'_id': ObjectId('5ec0a27324ec53bd2464c074'), 'foo': 'bar'}
Usage¶
$ mongocat --help
Usage: mongocat [OPTIONS] COLLECTION
Read/write to mongodb COLLECTION.
Options:
-R, --read
-W, --write
-p, --parser [json|yaml]
-u, --url TEXT MongoDB URI. format:
mongodb://[username:password@]host1[:port1]...
-d, --database TEXT Database name
--help Show this message and exit.
Combine with the power of unix¶
Dump running processes to db
$ ps | jc --ps | jq -cM '.[]' | mongocat -WR -d tensim processes
5ec0aeef4814de15eb742155
5ec0aeef4814de15eb742156
5ec0aeef4814de15eb742157
5ec0aeef4814de15eb742158
5ec0aeef4814de15eb742159
{'_id': ObjectId('5ec0aeef4814de15eb742155'), 'pid': 195657, 'tty': 'pts/8', 'time': '00:01:05', 'cmd': 'fish'}
{'_id': ObjectId('5ec0aeef4814de15eb742156'), 'pid': 396223, 'tty': 'pts/8', 'time': '00:00:00', 'cmd': 'ps'}
{'_id': ObjectId('5ec0aeef4814de15eb742157'), 'pid': 396224, 'tty': 'pts/8', 'time': '00:00:00', 'cmd': 'jc'}
{'_id': ObjectId('5ec0aeef4814de15eb742158'), 'pid': 396225, 'tty': 'pts/8', 'time': '00:00:00', 'cmd': 'jq'}
{'_id': ObjectId('5ec0aeef4814de15eb742159'), 'pid': 396226, 'tty': 'pts/8', 'time': '00:00:00', 'cmd': 'mongocat'}
Curl straight into DB
$ curl 'https://api.github.com/repos/DaniloZZZ/mongocat/commits?per_page=5' |\
jq -cM '.[] | {msg: .commit.message, name: .commit.committer.name}' |\
mongocat -WR -d tensim commits
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11145 100 11145 0 0 47628 0 --:--:-- --:--:-- --:--:-- 47628
5ec0aa4ac6ddf6dc2bf2def9
5ec0aa4ac6ddf6dc2bf2defa
5ec0aa4ac6ddf6dc2bf2defb
{'_id': ObjectId('5ec0aa4ac6ddf6dc2bf2def9'), 'msg': 'First working version', 'name': 'Danil Lykov'}
{'_id': ObjectId('5ec0aa4ac6ddf6dc2bf2defa'), 'msg': 'upd deps', 'name': 'Danil Lykov'}
{'_id': ObjectId('5ec0aa4ac6ddf6dc2bf2defb'), 'msg': 'init', 'name': 'Danil Lykov'}
- Tools used:
TODO¶
- [ ] Option to suppress print of added document
- [ ] Finding command that filters documents aka mongo grep
- [ ] Deleting documens using ids from stdin. Delete some:
mongocat --find 'blah' | mongocat --delete
Credits¶
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.