Migrating data from mongodb databases using golang

I have two mongo DB connections ( let’s say DbClientOne and DbClientTwo ). I have to migrate all the data from DbClientOne to DbClientTwo. I have written the following the function for that

func Migrate(source *mongo.Collection, target *mongo.Collection) {
	cursor, err := source.Find(context.TODO(), bson.D{})
	if err != nil {
		log.Println(err.Error())
	}

	var documents []bson.D
	if err = cursor.All(context.TODO(), &documents); err != nil {
		log.Println(err.Error())
	}

	for _, document := range documents {
		_, _ = target.InsertOne(context.TODO(), document)
	}
}

func MigrateFromSourceToTargetb(mongoConn *mongo.Client, docDbConn *mongo.Client) (error){

	dbs_doc, err := docDbConn.ListDatabaseNames(context.TODO(), bson.D{})
	if err != nil {
		log.Println(err)
		return err
	}

	for _, database := range dbs_doc {
		if database != "local" && database != "admin" {
			collections, err := docDbConn.Database(database).ListCollectionNames(context.TODO(), bson.D{{}})
			if err != nil {
				log.Fatal(err)
				return err
			}

			for _, collection := range collections {
				if collection != "admin" && collection != "local" {
					log.Println("Migrating data from " +database+" collection name: " + collection)
					ReadAndWrite(docDbConn.Database(database).Collection(collection), mongoConn.Database(database).Collection(collection))
				}
			}
		}
	}

	return nil
}

My method iterates over all the databases in DbClientOne, and all the collections in them, and all the documents in each of these collections, read them, and write them to DbClientTwo. However, this feels like a tedious way to do it.

So, are there any other faster ways? I am basically looking for an alternate method which read and write an entire database if it doesn’t exist in DbClientTwo, or read and write an entire collection if it doesn’t exist in the DbClientTwo, and goes through all the individual documents only if both the collection and database exists in both connections.