如何将记录从一个 mongo 集合复制到另一个 mongo 集合,这些集合驻留在可通过 ssh 访问的不同主机上

How to copy a record from one mongo collection to another mongo collection which are residing on different hosts which are accessible via ssh

我在不同主机(开发和阶段)上有两个 Mongo 实例,可以通过 ssh 访问它们。

如何从 dev 实例上的集合中复制一条记录并将其插入到 stage 实例中?

尝试的步骤:

尝试使用 mongodump 和 mongorestore,但没有任何用处,因为我的 mongo 实例可以通过 SSH 访问。

使用 SSH 时,您可以将 MongoDB 端口转发到本地计算机并使用常用的 MongoDB 工具:

# first terminal
ssh -L27017:localhost:27017 mongohostA

# second terminal
ssh -L27018:localhost:27017 mongohostB

# third terminal
mongodump -h localhost -p 27017 ....
mongorestore -h localhost -p 27018 ....

您在这里所做的是将您的本地计算机端口 27017 连接到 mongohostA MongoDB 并将您的本地计算机端口 27018 连接到 mongohostB MongoDB。然后像往常一样使用 MongoDB 工具,但配置不同的端口。在此处查找有关这些工具的文档:https://docs.mongodb.com/manual/reference/program/mongodump/

为了在 shellscript 中工作,我们使用 auto closing SSH tunnels。在这个例子中我们也使用 --query 选项来 mongodump:

#!/bin/bash
ssh -f -L27017:localhost:27017 mongohostA sleep 10

mongodump -h localhost -p 27017 -d databaseName -c collectionName \
          --query '{"_id": yourSingleDocumentID }' ....

ssh -f -L27018:localhost:27017 mongohostB sleep 10

mongorestore -h localhost -p 27018 ....