Robomongo and IPv6 protocol

Robomongo RC6 now supports IPv6 protocal:

You can specify IPv6 address with or without square brackets. The following IPv6 addresses are equally valid and are the same for Robomongo:

[fe80::601:9bff:feab:ec01]fe80::601:9bff:feab:ec01

Colon (:) characters in IPv6 addresses may conflict with the established syntax of resource identifiers, such as URIs and URLs. The colon has traditionally been used to terminate the host path before a port number. To alleviate this conflict, Robomongo encloses literal IPv6 addresses in square brackets in such resource identifiers.

This rule is not something that Robomongo or MongoDB has chosen for URLs with IPv6 address. According to RFC 3986, section 3.2.2:

A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets (“[” and “]”). This is the only place where square bracket characters are allowed in the URI syntax. In anticipation of future, as-yet-undefined IP literal address formats, an implementation may use an optional version flag to indicate such a format explicitly rather than rely on heuristic determination.

That is why Robomongo will always use “square brackets” syntax for IPv6 addresses in UI:

Actually, MongoDB shell requires to use square brackets for IPv6 address even when there is no ambiguity:

mongo --ipv6 --host "[fe80::601:9bff:feab:ec01]" --port 2701

You can connect to the same instance of MongoDB with a shorter command. In this case square brackets is the only way to distinguish between IPv6 address parts and port number:

mongo --ipv6 "[fe80::601:9bff:feab:ec01]:2701"

MongoDB Connection String

In the next versions of Robomongo we will add support for MongoDB Connection String format. Just for your convenience we will show here how connection string should look when you work with IPv6 addresses:

mongodb://[fe80::601:9bff:feab:ec01]:2801,[fe80::601:9bff:feab:ec02]:2802/?replicaSet=test

Enjoy!

Please submit any found issues to our GitHub tracker.