Mongodump 1 один документ не удается, потому что ObjectId - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь создать дамп mon go для одного отдельного документа в коллекции mon go.

Когда я делаю это в командной строке windows:

mongodump /host:x.x.x.x /port:27017 /username:my_user /password:my_pass -d my_db -o C:\fsdump -c "fs.files" -q '{_id: ObjectId("28ad7bkjia3e927d690385ec")}'

Я получаю эту ошибку:

positional arguments not allowed: [ObjectId(28ad7bkjia3e927d690385ec)}']

, когда я меняю идентификатор в пн go с ObjectId("28ad7bkjia3e927d690385ec") на "28ad7bkjia3e927d690385ec", и когда я сбрасываю, как это:

mongodump /host:x.x.x.x /port:27017 /username:my_user /password:my_pass -d my_db -o C:\fsdump -c "fs.files" -q '{_id: "28ad7bkjia3e927d690385ec"}'

тогда он работает, как и ожидалось

, поэтому мой вопрос: как я могу использовать mongodump и выполнять фильтрацию по заданным c ObjectId's?

или есть другой способ создать экспорт для подмножества документов в коллекции (вместо всей коллекции)?

1 Ответ

1 голос
/ 12 февраля 2020

ObjectId("28ad7bkjia3e927d690385ec") - это вызов функции javascript для конструктора ObjectId. Это недействительно JSON. "28ad7bkjia3e927d690385ec" также не является допустимым ObjectId.

Mongodump использует расширенную форму JSON, в которой есть тег для указания типа поля, поэтому вы должны указать ObjectId следующим образом:

-q '{"_id":{"$oid":"5f76b7cc0311bd14f80a3dec"}}'

...