---
name: "mongoc_client_get_server_descriptions"
section: "3"
platform: "linux"
package: "libmongoc-doc"
version: "1.30.4-1+deb13u3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/mongoc_client_get_server_descriptions"
---

# mongoc\_client\_get\_server\_descriptions(3)

## SYNOPSIS

```
mongoc_server_description_t **
mongoc_client_get_server_descriptions (const mongoc_client_t *client,
                                       size_t *n);
```

Fetches an array of *mongoc\_server\_description\_t* structs for all known servers in the topology. Returns no servers until the client connects. Returns a single server if the client is directly connected, or all members of a replica set if the client's MongoDB URI includes a "replicaSet" option, or all known mongos servers if the MongoDB URI includes a list of them.

```
void
show_servers (const mongoc_client_t *client)
{
   bson_t *b = BCON_NEW ("ping", BCON_INT32 (1));
   bson_error_t error;
   bool r;
   mongoc_server_description_t **sds;
   size_t i, n;
   /* ensure client has connected */
   r = mongoc_client_command_simple (client, "db", b, NULL, NULL, &error);
   if (!r) {
      MONGOC_ERROR ("could not connect: %s\n", error.message);
      return;
   }
   sds = mongoc_client_get_server_descriptions (client, &n);
   for (i = 0; i < n; ++i) {
      printf ("%s\n", mongoc_server_description_host (sds[i])->host_and_port);
   }
   mongoc_server_descriptions_destroy_all (sds, n);
   bson_destroy (&b);
}
```

## PARAMETERS

- •

  **client**: A *mongoc\_client\_t*.

- •

  **n**: Receives the length of the descriptions array.

## RETURNS

A newly allocated array that must be freed with *mongoc\_server\_descriptions\_destroy\_all()*.

## AUTHOR

MongoDB, Inc

## COPYRIGHT

2009-present, MongoDB, Inc.
