如果要查询通过mongodb的mongodump导出的.bson文件(比如历史备份),是一件比较麻烦的事情。简单写了一个工具sonq,可以针对.bson文件直接进行查询。
首先可以通过pip进行安装
sudo pip install sonq
然后就可以通过sonq这个命令行工作对.bson文件进行查询了,下面举几个例子。
直接输出source.bson文件中的内容,不做过滤:
sonq source.bson
在source.bson中,查询name为'Stark'的文档:
sonq -f '{"name": "Stark"}' source.bson
在source.bson中,查询name在['Ned', 'Robb', 'Snow']中的文档:
sonq -f '{"name": {"$in": ["Ned", "Robb", "Snow"]}}' source.bson
把查询的结果输出到target.bson中,这样target.bson也可以再导入回到其他的mongodb中(比如测试使用的数据库):
sonq -f '{"name": "Stark"}' -o target.json source.bson
sonq的源码见 https://github.com/socrateslee/sonq