2014-01-30 1 views
5

Документация Mongodump определяет можно сбросить с помощью специального запросаMongoDump запрос с BinData

т.е.

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

Я хранения _ids поля как BinData, можно запросить по этому поводу?

Я попытался

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

не повезло.

ответ

3

Это, к сожалению, требует много бегства. Кроме того, вам нужно будет использовать представление $binary, например,

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

Обратите внимание, что $type должен быть шестнадцатеричная строка, а не число.

В linux вам также необходимо будет избежать $ до \$.

+0

Я пробовал это, он работал, но без соответствующих результатов. В MongoVue я вижу, что мое _id-поле хранится как Binary-3: UuidLegacy, которое также является тем же типом, что и в вашем запросе. Я понятия не имею, почему он ничего не возвращает. Я попытался выполнить необработанный запрос, предоставленный вами в MongoVue, и он также не дал никаких результатов. –

+0

Я тестировал это на своей машине win7, прежде чем отправлять его, и это сработало. Вы используете linux или windows? Какую версию манго вы запускаете? (мой: 2.5.4) – mnemosyn

+0

Я запускаю 2.2.2, Windows 7. –

4

Вам не нужно много избегать. Вы можете просто использовать одиночную кавычку вне запроса и двойную кавычку внутри, т. Е. Но будьте осторожны, чтобы иметь тип как шестнадцатеричный, то есть «03», а не «3»

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

Это также работает –