mongorestore - AtlasError - 不支持获取非桶系统集合

mongorestore - AtlasError - getting non-bucket system collections is unsupported

Failed: (AtlasError) getting non-bucket system collections is unsupported

我正在尝试使用 mongorestore 将数据从一个数据库迁移到另一个数据库。都在阿特拉斯上。转储工作正常,但 mongorestore 正在输出以下消息。我不知道这意味着什么, google 搜索不会呈现任何远程关闭。我在每行输出的开头添加了连字符,以使其更具可读性。

-- using write concern: &{majority false 0}
-- will listen for SIGTERM, SIGINT, and SIGKILL
-- connected to node type: replset
-- The --db and --collection flags are deprecated for this use-case; please use --nsInclude instead, i.e. with --nsInclude=${DATABASE}.${COLLECTION}
-- got error from options parsing: (AtlasError) getting non-bucket system collections is unsupported
-- Failed: (AtlasError) getting non-bucket system collections is unsupported
-- 0 document(s) restored successfully. 0 document(s) failed to restore.

命令我运行

mongorestore --uri="mongodb+srv://username:password@hostname.mongodb.net/$DEV_DATABASE" \
  --preserveUUID \
  --drop \
  --nsFrom="$PROD_DATABASE.*" \
  --nsTo="$DEV_DATABASE.*" \
  --verbose \
  "dump/$PROD_DATABASE"

我还尝试过使用 mongodump 创建存档文件并将其与 --archive="filename" 一起使用,以及将标准输出管道传输到 mongorestore。我还检查了我正在使用的用户是否具有正确的权限。他们扮演 Atlas admin 的角色,我认为这是正确的。如果有任何区别,我要恢复到的开发集群是 M0。

我还应该指出,我的 Mongo 管理经验很少,所以我确信我忽略了一些事情。感谢您的帮助。

MongoDB 将集合 UUID 记录在单独的系统集合中。

--preserveUUID 选项指示 mongorestore 创建集合,并强制它使用来自源系统的 UUID。

错误消息表明 Atlas 拒绝允许您访问或修改该系统集合。

运行 恢复到 Atlas 时没有 --preserveUUID 选项。