Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MongoDump query with BinData

The Mongodump documentation specifies you can dump using a specific query

i.e.

mongodump --host localhost --db mydb --collection testCollection --query "{SomeKey: 'some value'}"

I'm storing _ids fields as BinData, is it possible to query on this?

I've tried

mongodump --host localhost --db mydb --collection testCollection --query "{_id: 'BinData(3,ryBRQ+Px0kGRsZofJhHgqg==)'}"

With no luck.

like image 427
Mark Walsh Avatar asked Jan 30 '14 15:01

Mark Walsh


2 Answers

You don't need to escape that much. You may just use single-quote outside of the query and double-quote inside, i.e. But beware to have the type as hex, meaning "03" and not "3"

mongodump --host localhost --db test --collection bd --query
'{"_id" : { "$binary" : "ryBRQ+Px0kGRsZofJhHgqg==", "$type" : "03" } }'
like image 186
Rmatt Avatar answered Sep 22 '22 15:09

Rmatt


This needs a lot of escaping, unfortunately. Also, you'll have to use the $binary representation instead, e.g.

mongodump --host localhost --db test --collection bd --query 
"{\"_id\" : { \"$binary\" : \"ryBRQ+Px0kGRsZofJhHgqg==\", \"$type\" : \"03\" } }"

Note that $type must be a hex string, not a number.

In linux, you'll also have to escape the $ to \$.

like image 42
mnemosyn Avatar answered Sep 23 '22 15:09

mnemosyn