mongodump 1 单个文档失败,因为 ObjectId

mongodump 1 single document fails because ObjectId

我正在尝试为 mongo 集合中的 1 个文档创建 mongo 转储。

当我在 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)}']

当我将 mongo 中的 id 从 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 并对特定的 ObjectId 进行过滤?

或者是否有另一种方法可以为集合中的文档子集(而不是整个集合)创建导出?

ObjectId("28ad7bkjia3e927d690385ec") 是对 ObjectId 构造函数的 javascript 函数调用。这是无效的 JSON。 "28ad7bkjia3e927d690385ec" 也不是有效的 ObjectId。

Mongodump 使用 JSON 的扩展形式,它有一个标记来指示字段类型,因此您可以像这样指定一个 ObjectId:

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