<?xml version="1.0"?>

<page id="mongoc_index_opt_t"
      type="guide"
      style="class"
      xmlns="http://projectmallard.org/1.0/"
      xmlns:api="http://projectmallard.org/experimental/api/"
      xmlns:ui="http://projectmallard.org/experimental/ui/">
  <info>
    <link type="guide" xref="index#api-reference" />
  </info>

  <title>mongoc_index_opt_t</title>

  <section id="description">
    <title>Synopsis</title>
    <synopsis><code mime="text/x-csrc"><![CDATA[#include <mongoc.h>

typedef struct
{
   bool                        is_initialized;
   bool                        background;
   bool                        unique;
   const char                 *name;
   bool                        drop_dups;
   bool                        sparse;
   int32_t                     expire_after_seconds;
   int32_t                     v;
   const bson_t               *weights;
   const char                 *default_language;
   const char                 *language_override;
   mongoc_index_opt_geo_t     *geo_options;
   mongoc_index_opt_storage_t *storage_options;
   const bson_t               *partial_filter_expression;
   void                       *padding[5];
} mongoc_index_opt_t;]]></code></synopsis>
  </section>

  <section id="desc">
    <title>Description</title>
    <p>This structure contains the options that may be used for tuning a specific index.</p>

    <p>See the <link href="https://docs.mongodb.org/manual/reference/command/createIndexes/">
    createIndexes documentations</link> in the MongoDB manual for descriptions of individual
    options.</p>

    <p>NOTE: dropDups is deprecated as of MongoDB version 3.0.0.  This option is silently
    ignored by the server and unique index builds using this option will fail if a duplicate
    value is detected.</p>
  </section>

  <section id="example">
    <title>Example</title>
    <screen><code mime="text/x-csrc"><![CDATA[
{
   bson_t keys;
   bson_error_t error;
   mongoc_index_opt_t opt;
   mongoc_index_opt_geo_t geo_opt;

   mongoc_index_opt_init(&opt);
   mongoc_index_opt_geo_init(&geo_opt);

   bson_init(&keys);
   BSON_APPEND_UTF8(&keys, "location", "2d");

   geo_opt.twod_location_min = -123;
   geo_opt.twod_location_max = +123;
   geo_opt.twod_bits_precision = 30;
   opt.geo_options = &geo_opt;

   collection = mongoc_client_get_collection (client, "test", "geo_test");
   if (mongoc_collection_create_index(collection, &keys, &opt, &error)) {
       /* Successfully created the geo index */
   }
   bson_destroy(&keys);
   mongoc_collection_destroy(&collection);
}
]]></code></screen>
  </section>

  <links type="topic" groups="function" style="2column">
    <title>Functions</title>
  </links>

  <section id="seealso">
    <title>See Also</title>
    <p><link type="seealso" xref="mongoc_index_opt_geo_t"><code>mongoc_index_opt_geo_t</code></link></p>
    <p><link type="seealso" xref="mongoc_index_opt_wt_t"><code>mongoc_index_opt_wt_t</code></link></p>
  </section>
</page>
