@@ -70,7 +70,18 @@ Index Types
7070-----------
7171
7272MongoDB provides several different index types to support querying
73- your data. The following sections describe the most common index types
73+ your data. The following steps describe the process for creating an index:
74+
75+ - Use the ``IndexKeysDefinitionBuilder<TDocument>`` class, accessible through the
76+ ``Builders<TDocument>.IndexKeys`` property, to create one or more
77+ ``IndexKeysDefinition<TDocument>`` objects. These key definitions describe the type
78+ of index to create and the index's other properties.
79+ - Create a new ``CreateIndexModel<TDocument>`` object. Pass the key definitions from the
80+ previous step to the constructor.
81+ - Call the ``CreateOne()`` method on your collection's ``Indexes`` property. Pass
82+ the ``CreateIndexModel<TDocument>`` object from the previous step.
83+
84+ The following sections describe the most common index types
7485and provide sample code for creating each index type.
7586
7687.. note::
@@ -313,9 +324,15 @@ and :manual:`Text Indexes </core/index-text>` in the Server manual.
313324Geospatial Indexes
314325~~~~~~~~~~~~~~~~~~
315326
316- MongoDB supports queries of geospatial coordinate data using **2dsphere
317- indexes**. With a 2dsphere index, you can query the geospatial data for
318- inclusion, intersection, and proximity.
327+ You can query geospatial coordinate data in MongoDB by using **2d** or
328+ **2dsphere indexes**.
329+
330+ 2dsphere Indexes
331+ ++++++++++++++++
332+
333+ 2dsphere indexes support geospatial queries on an earth-like sphere. By using a 2dsphere
334+ index, you can query the geospatial data For inclusion, intersection, and proximity.
335+ The indexed field must be either GeoJSON objects or legacy coordinate pairs.
319336
320337To create a 2dsphere index, you must specify a field that contains
321338only **GeoJSON objects**. For more details about this type, see :manual:`GeoJSON objects </reference/geojson>`
@@ -367,7 +384,11 @@ The following is an example of a geospatial query using the "location.geo" index
367384 :end-before: end-geospatial-query
368385 :dedent:
369386
370- MongoDB also supports ``2d`` indexes for calculating distances on a Euclidean plane and
387+ 2d Indexes
388+ ++++++++++
389+
390+ The {+driver-short+} also includes a ``Geo2D`` method for creating 2d indexes.
391+ You can use these indexes to calculate distances on a Euclidean plane and
371392for working with the "legacy coordinate pairs" syntax used in MongoDB 2.2 and earlier.
372393To learn more, see :manual:`Geospatial Queries </geospatial-queries>` in the Server manual.
373394
@@ -433,81 +454,12 @@ all indexes in a collection:
433454 :end-before: end-list-indexes
434455 :dedent:
435456
436- .. TODO: integrate into existing page
437-
438- Sample Class
439- ------------
440-
441- The code examples in this guide demonstrate how you can use builders to
442- create types to interact with documents in the sample collection ``plants.flowers``.
443- Documents in this collection are modeled by the following ``Flower`` class:
444-
445- .. literalinclude:: /includes/fundamentals/code-examples/builders.cs
446- :language: csharp
447- :dedent:
448- :start-after: start-model
449- :end-before: end-model
450-
451- Each builder class takes a generic type parameter
452- ``TDocument`` which represents the type of document that you are working
453- with. In this guide, the ``Flower`` class is the document type used in
454- each builder class example.
455-
456- .. _csharp-builders-indexes:
457-
458- Define Index Keys
459- -----------------
460-
461- The ``IndexKeysDefinitionBuilder`` class provides a type-safe interface for
462- defining index keys. Suppose you want to select ``Category`` as an
463- ascending index key.
464-
465- Use builders to select the index key with the typed variant:
466-
467- .. code-block:: csharp
468- :copyable: true
469-
470- var builder = Builders<Flower>.IndexKeys;
471- var keys = builder.Ascending(f => f.Category);
472-
473- Alternatively, you can use string-based field names to select the index key:
474-
475- .. code-block:: csharp
476- :copyable: true
477-
478- var builder = Builders<BsonDocument>.IndexKeys;
479- var keys = builder.Ascending("Category");
480-
481- The ``IndexKeysDefinitionBuilder`` class also provides methods to build
482- a wildcard index. You can create a wildcard index using ``All field paths`` or ``A
483- single field path``, in this case using ``Category``:
484-
485- .. tabs::
486-
487- .. tab:: ``All field paths``
488- :tabid: all-wildcard-index
489-
490- .. code-block:: csharp
491- :copyable: true
492-
493- var builder = Builders<Flower>.IndexKeys;
494- var keys = builder.Wildcard();
495-
496- .. tab:: ``A single field path``
497- :tabid: single-wildcard-index
498-
499- .. code-block:: csharp
500- :copyable: true
501-
502- var builder = Builders<Flower>.IndexKeys;
503-
504- // Using the typed variant
505- var keys = builder.Wildcard(f => f.Category);
506-
507- // Using string-based field names
508- var keys = builder.Wildcard("Category");
457+ Additional Information
458+ ----------------------
509459
510- For more information about how to use wildcard indexes , see
511- :manual:`Wildcard Indexes </core/indexes/index-types/index-wildcard>`.
460+ For more information about the classes and methods used on this page , see the following
461+ API documentation:
512462
463+ - `CreateOne() <{+new-api-root+}/MongoDB.Driver/MongoDB.Driver.IMongoIndexManager-1.CreateOne.html>`__
464+ - `CreateIndexModel<TDocument> <{+new-api-root+}/MongoDB.Driver/MongoDB.Driver.CreateIndexModel-1.html>`__
513465- `IndexKeysDefinitionBuilder <{+new-api-root+}/MongoDB.Driver/MongoDB.Driver.IndexKeysDefinitionBuilder-1.html>`__
0 commit comments