number-type
- number-type
- How to Index Numeric Values
- Define the Index for the number Type
- Configure number Field Properties
- Try an Example for the number Type
- Define the Index for the number Type
- Configure number Field Properties
- Try an Example for the number Type
- Define the Index for the number Type
- Configure number Field Properties
- Try an Example for the number Type
- Define the Index for the number Type
- Configure number Field Properties
- Try an Example for the number Type
- Define the Index for the number Type
- Configure number Field Properties
- Try an Example for the number Type
- Define the Index for the number Type
- Configure number Field Properties
- Try an Example for the number Type
- Define the Index for the number Type
For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt
<!-- Tab options on this page. Append to the .md URL to filter: ?tabs=<id,...> select specific tabs (e.g. ?tabs=nodejs,shell) ?allTabs=true include every tab (no param) default: one tab per tabset
Available tabs: other tabs: representation, indexints, indexdoubles, vib, jsonib, cloud, local, maven bom, gradle bom, maven, gradle -->
How to Index Numeric Values
Use the MongoDB Search number field type to index fields with numeric values of int32, int64, and double data types. After you index a field as number, you can query it using the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators. You can also run [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref queries on indexed number fields.
You can use the MongoDB Search number type to index fields with numeric values of int32, int64, and double data types. You can use the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators to query indexed fields of type number. You can also run a [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref query on number type fields.
Note:
To query numeric values in arrays, you can use only the [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref operator.
MongoDB Search automatically indexes all numeric fields in indexes created after [July 2023](https://www.mongodb.com/docs/atlas/search-changelog.md#std-label-fts20230710 for [sorting](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref the MongoDB Search results. For preexisting indexes, you must rebuild the index to use number fields in the index for sorting. To learn more, see [Update and Rebuild an Existing MongoDB Search Index](https://www.mongodb.com/docs/search/indexes/manage-indexes.md#std-label-fts-index-rebuild and [Sort MongoDB Search Results.](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref
If you enable [dynamic mappings](https://www.mongodb.com/docs/search/indexes/define-field-mappings.md#std-label-static-dynamic-mappings, MongoDB Search automatically indexes fields of type number. You can use the Visual Editor or the JSON Editor in the Atlas UI to index fields as the number type.
Define the Index for the number Type
- Retrieve your Service Account access token for the project.
Use your service account to generate an access token, which authenticates your requests to the Atlas Administration API. To learn how to generate an access token, see [Make an API (Application Programming Interface) Request.](https://www.mongodb.com/docs/atlas/configure-api-access.md#std-label-example-api-request
- Make an API (Application Programming Interface) call.
Replace the following values in the curl command below. This command sends a POST request to your cluster to create a MongoDB Search index with the number field type.
-
Replace {
ACCESS-TOKEN} with the output from the preceding step -
Replace {
groupId} with the project ID of the project where you want to create the MongoDB Search index -
Replace {
clusterName} with the name of the cluster where you want to create the MongoDB Search index
shell
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header "Accept: application/vnd.atlas.2025-03-12+json" \
--header "Content-Type: application/json" \
-X POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes" \
-d '{ "collectionName": "<collection>",
"database": "<database>",
"name": "default",
"type": "search",
"definition": {
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "number",
"representation": "int64|doubles",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}
}'
Configure number Field Properties
The MongoDB Search number type has the following parameters:
| UI Field Name | JSON Option | Type | Necessity | Description | Default |
|---|---|---|---|---|---|
| Data Type | type |
string | Required | Human-readable label that identifies this field type. Value must be number. |
|
| Representation | representation |
string | Optional | Data type of the field to index. Values are: int64 - for indexing large integers without loss of precision and for rounding double values to integers. You can't use this type to index large double values.; double - for indexing large double values without rounding. |
double |
| Index Integers | indexIntegers |
boolean | Optional | Flag that indicates whether to index or omit indexing int32 and int64 type values. Value can be true or false. Either this or indexDoubles must be true. |
true |
| Index Doubles | indexDoubles |
boolean | Optional | Flag that indicates whether to index or omit indexing double type values. Value can be true or false. Either this or indexIntegers must be true. |
true |
Try an Example for the number Type
The following index definition examples use collections in the [sample data](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets. After you [load the sample data](https://www.mongodb.com/docs/atlas/import/load-sample-data.md#std-label-load-sample-data, you can use these examples to index fields as the number type.
To learn how to set up and run the following example code, see [Define the Index for the token Type](https://www.mongodb.com/docs/search/indexes/field-types/token-type.md#std-label-define-index-token-admin-api.
Representation Example
The following index definition for the sample_analytics.accounts collection in the [sample dataset](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets indexes the account_id field with 64-bit integer values. The following example also:
-
Indexes all other integer values in the
account_idfield. -
Rounds any decimal values and indexes small double type values in the
account_idfield.
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header "Accept: application/vnd.atlas.2025-03-12+json" \
--header "Content-Type: application/json" \
-X POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes" \
-d '{ "collectionName": "accounts",
"database": "sample_analytics",
"name": "default",
"type": "search",
"definition": {
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64"
}
}
}
}
}'
Output:
{"collectionName":"accounts","database":"sample_analytics","indexID":"<indexID>","latestDefinition":{"mappings":{"dynamic":false,"fields":{"account_id":{"type":"number","representation":"int64"}}}},"latestDefinitionVersion":{"version":0},"name":"default","queryable":false,"status":"PENDING","type":"search"}
You can use the MongoDB Search number type to index fields with numeric values of int32, int64, and double data types. You can use the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators to query indexed fields of type number. You can also run a [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref query on number type fields.
Note:
To query numeric values in arrays, you can use only the [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref operator.
MongoDB Search automatically indexes all numeric fields in indexes created after [July 2023](https://www.mongodb.com/docs/atlas/search-changelog.md#std-label-fts20230710 for [sorting](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref the MongoDB Search results. For preexisting indexes, you must rebuild the index to use number fields in the index for sorting. To learn more, see [Update and Rebuild an Existing MongoDB Search Index](https://www.mongodb.com/docs/search/indexes/manage-indexes.md#std-label-fts-index-rebuild and [Sort MongoDB Search Results.](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref
If you enable [dynamic mappings](https://www.mongodb.com/docs/search/indexes/define-field-mappings.md#std-label-static-dynamic-mappings, MongoDB Search automatically indexes fields of type number. You can use the Visual Editor or the JSON Editor in the Atlas UI to index fields as the number type.
Define the Index for the number Type
- Create a
search-index.jsonconfiguration file and specify thenumbertype.
json
{
"name": "default",
"collectionName": "<collection>",
"database": "<database>",
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "number",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}
- Connect to the Atlas CLI
In your terminal, connect to your cluster from the Atlas CLI. To learn more, see Connect from the Atlas CLI.
- Create a MongoDB Search index.
Run the atlas clusters search indexes create command in your terminal, replacing <clusterName> with the name of the cluster, and <path-to-file> with the path to the search-index.json file:
shell
atlas clusters search indexes create --clusterName <cluster-name> --file <path-to-file>
Configure number Field Properties
The MongoDB Search number type has the following parameters:
| UI Field Name | JSON Option | Type | Necessity | Description | Default |
|---|---|---|---|---|---|
| Data Type | type |
string | Required | Human-readable label that identifies this field type. Value must be number. |
|
| Representation | representation |
string | Optional | Data type of the field to index. Values are: int64 - for indexing large integers without loss of precision and for rounding double values to integers. You can't use this type to index large double values.; double - for indexing large double values without rounding. |
double |
| Index Integers | indexIntegers |
boolean | Optional | Flag that indicates whether to index or omit indexing int32 and int64 type values. Value can be true or false. Either this or indexDoubles must be true. |
true |
| Index Doubles | indexDoubles |
boolean | Optional | Flag that indicates whether to index or omit indexing double type values. Value can be true or false. Either this or indexIntegers must be true. |
true |
Try an Example for the number Type
The following index definition examples use collections in the [sample data](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets. After you [load the sample data](https://www.mongodb.com/docs/atlas/import/load-sample-data.md#std-label-load-sample-data, you can use these examples to index fields as the number type.
To learn how to set up and run the following example code, see [Define the Index for the token Type](https://www.mongodb.com/docs/search/indexes/field-types/token-type.md#std-label-define-index-token-admin-api.
Representation Example
The following index definition for the sample_analytics.accounts collection in the [sample dataset](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets indexes the account_id field with 64-bit integer values. The following example also:
-
Indexes all other integer values in the
account_idfield. -
Rounds any decimal values and indexes small double type values in the
account_idfield.
{
"name": "default",
"collectionName": "accounts",
"database": "sample_analytics",
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64"
}
}
}
}
You can use the MongoDB Search number type to index fields with numeric values of int32, int64, and double data types. You can use the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators to query indexed fields of type number. You can also run a [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref query on number type fields.
Note:
To query numeric values in arrays, you can use only the [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref operator.
MongoDB Search automatically indexes all numeric fields in indexes created after [July 2023](https://www.mongodb.com/docs/atlas/search-changelog.md#std-label-fts20230710 for [sorting](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref the MongoDB Search results. For preexisting indexes, you must rebuild the index to use number fields in the index for sorting. To learn more, see [Update and Rebuild an Existing MongoDB Search Index](https://www.mongodb.com/docs/search/indexes/manage-indexes.md#std-label-fts-index-rebuild and [Sort MongoDB Search Results.](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref
If you enable [dynamic mappings](https://www.mongodb.com/docs/search/indexes/define-field-mappings.md#std-label-static-dynamic-mappings, MongoDB Search automatically indexes fields of type number. You can use the Visual Editor or the JSON Editor in the Atlas UI to index fields as the number type.
Define the Index for the number Type
- Connect to your cluster using MongoDB Compass.
Open Compass and connect to your cluster. For detailed instructions, see [Connect to a Cluster via Compass.](https://www.mongodb.com/docs/atlas/compass-connection.md#std-label-atlas-connect-via-compass
- Specify the database and collection.
On the Database screen, click the name of the database, then click the name of the collection.
- Create the MongoDB Search index.
Click the Indexes tab, then select Search Indexes.
Click Create Atlas Search Index to open the index creation dialog box.
Specify a name for the index.
Your MongoDB Search index is named default by default. If you keep this name, then your index will be the default Search index for any MongoDB Search query that does not specify a different index option in its [operators](https://www.mongodb.com/docs/search/query/operators-collectors/overview.md#std-label-fts-operators. If you are creating multiple indexes, we recommend that you maintain a consistent, descriptive naming convention across your indexes.
Specify the JSON (Javascript Object Notation) MongoDB Search index definition.
json
{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "number",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}
Click Create Search Index.
Configure number Field Properties
The MongoDB Search number type has the following parameters:
| UI Field Name | JSON Option | Type | Necessity | Description | Default |
|---|---|---|---|---|---|
| Data Type | type |
string | Required | Human-readable label that identifies this field type. Value must be number. |
|
| Representation | representation |
string | Optional | Data type of the field to index. Values are: int64 - for indexing large integers without loss of precision and for rounding double values to integers. You can't use this type to index large double values.; double - for indexing large double values without rounding. |
double |
| Index Integers | indexIntegers |
boolean | Optional | Flag that indicates whether to index or omit indexing int32 and int64 type values. Value can be true or false. Either this or indexDoubles must be true. |
true |
| Index Doubles | indexDoubles |
boolean | Optional | Flag that indicates whether to index or omit indexing double type values. Value can be true or false. Either this or indexIntegers must be true. |
true |
Try an Example for the number Type
The following index definition examples use collections in the [sample data](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets. After you [load the sample data](https://www.mongodb.com/docs/atlas/import/load-sample-data.md#std-label-load-sample-data, you can use these examples to index fields as the number type.
To learn how to set up and run the following example code, see [Define the Index for the token Type](https://www.mongodb.com/docs/search/indexes/field-types/token-type.md#std-label-define-index-token-admin-api.
Representation Example
The following index definition for the sample_analytics.accounts collection in the [sample dataset](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets indexes the account_id field with 64-bit integer values. The following example also:
-
Indexes all other integer values in the
account_idfield. -
Rounds any decimal values and indexes small double type values in the
account_idfield.
{
"mappings": {
"dynamic": false,
"fields": {
"title": {
"type": "number",
"representation": "int64"
}
}
}
}
You can use the MongoDB Search number type to index fields with numeric values of int32, int64, and double data types. You can use the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators to query indexed fields of type number. You can also run a [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref query on number type fields.
Note:
To query numeric values in arrays, you can use only the [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref operator.
MongoDB Search automatically indexes all numeric fields in indexes created after [July 2023](https://www.mongodb.com/docs/atlas/search-changelog.md#std-label-fts20230710 for [sorting](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref the MongoDB Search results. For preexisting indexes, you must rebuild the index to use number fields in the index for sorting. To learn more, see [Update and Rebuild an Existing MongoDB Search Index](https://www.mongodb.com/docs/search/indexes/manage-indexes.md#std-label-fts-index-rebuild and [Sort MongoDB Search Results.](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref
If you enable [dynamic mappings](https://www.mongodb.com/docs/search/indexes/define-field-mappings.md#std-label-static-dynamic-mappings, MongoDB Search automatically indexes fields of type number. You can use the Visual Editor or the JSON Editor in the Atlas UI to index fields as the number type.
Define the Index for the number Type
- Connect to the deployment by using
mongosh.
In your terminal, connect to your Atlas cloud-hosted deployment or local deployment from [mongosh](https://www.mongodb.com/docs/mongodb-shell.md#mongodb-binary-bin.mongosh. For detailed instructions on how to connect, see Connect to a Deployment.
- Switch to the database that contains the collection for which you want to create the index.
shell
use <database>
Output:
shell
switched to db <database>
- Run the
db.collection.createSearchIndex()method to create the index.
shell
db.<collection>.createSearchIndex(
"default",
{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "number",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}
)
Output:
text
default
Configure number Field Properties
The MongoDB Search number type has the following parameters:
| UI Field Name | JSON Option | Type | Necessity | Description | Default |
|---|---|---|---|---|---|
| Data Type | type |
string | Required | Human-readable label that identifies this field type. Value must be number. |
|
| Representation | representation |
string | Optional | Data type of the field to index. Values are: int64 - for indexing large integers without loss of precision and for rounding double values to integers. You can't use this type to index large double values.; double - for indexing large double values without rounding. |
double |
| Index Integers | indexIntegers |
boolean | Optional | Flag that indicates whether to index or omit indexing int32 and int64 type values. Value can be true or false. Either this or indexDoubles must be true. |
true |
| Index Doubles | indexDoubles |
boolean | Optional | Flag that indicates whether to index or omit indexing double type values. Value can be true or false. Either this or indexIntegers must be true. |
true |
Try an Example for the number Type
The following index definition examples use collections in the [sample data](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets. After you [load the sample data](https://www.mongodb.com/docs/atlas/import/load-sample-data.md#std-label-load-sample-data, you can use these examples to index fields as the number type.
To learn how to set up and run the following example code, see [Define the Index for the token Type](https://www.mongodb.com/docs/search/indexes/field-types/token-type.md#std-label-define-index-token-admin-api.
Representation Example
The following index definition for the sample_analytics.accounts collection in the [sample dataset](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets indexes the account_id field with 64-bit integer values. The following example also:
-
Indexes all other integer values in the
account_idfield. -
Rounds any decimal values and indexes small double type values in the
account_idfield.
use sample_analytics
db.accounts.createSearchIndex(
"default",
{
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64"
}
}
}
}
)
Output:
default
You can use the MongoDB Search number type to index fields with numeric values of int32, int64, and double data types. You can use the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators to query indexed fields of type number. You can also run a [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref query on number type fields.
Note:
To query numeric values in arrays, you can use only the [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref operator.
MongoDB Search automatically indexes all numeric fields in indexes created after [July 2023](https://www.mongodb.com/docs/atlas/search-changelog.md#std-label-fts20230710 for [sorting](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref the MongoDB Search results. For preexisting indexes, you must rebuild the index to use number fields in the index for sorting. To learn more, see [Update and Rebuild an Existing MongoDB Search Index](https://www.mongodb.com/docs/search/indexes/manage-indexes.md#std-label-fts-index-rebuild and [Sort MongoDB Search Results.](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref
If you enable [dynamic mappings](https://www.mongodb.com/docs/search/indexes/define-field-mappings.md#std-label-static-dynamic-mappings, MongoDB Search automatically indexes fields of type number. You can use the Visual Editor or the JSON Editor in the Atlas UI to index fields as the number type.
Define the Index for the number Type
Choose your preferred configuration method in the Atlas UI and then select the database and collection.
Visual Editor
-
Click Refine Your Index to configure your index.
-
In the Field Mappings section, click Add Field Mapping to open the Add Field Mapping window.
-
Click Customized Configuration.
-
Select the field to index from the Field Name dropdown.
Note:
You can't index fields that contain the dollar ($) sign at the start of the field name.
-
Click the Data Type dropdown and select Number.
-
Configure the field properties for the
numbertype. To learn more, see [Field Properties](https://www.mongodb.com/docs/search/indexes/field-types/uuid-type.md#std-label-fts-field-types-uuid-options. -
Click Add.
Configure number Field Properties
The MongoDB Search number type has the following parameters:
| UI Field Name | JSON Option | Type | Necessity | Description | Default |
|---|---|---|---|---|---|
| Data Type | type |
string | Required | Human-readable label that identifies this field type. Value must be number. |
|
| Representation | representation |
string | Optional | Data type of the field to index. Values are: int64 - for indexing large integers without loss of precision and for rounding double values to integers. You can't use this type to index large double values.; double - for indexing large double values without rounding. |
double |
| Index Integers | indexIntegers |
boolean | Optional | Flag that indicates whether to index or omit indexing int32 and int64 type values. Value can be true or false. Either this or indexDoubles must be true. |
true |
| Index Doubles | indexDoubles |
boolean | Optional | Flag that indicates whether to index or omit indexing double type values. Value can be true or false. Either this or indexIntegers must be true. |
true |
Try an Example for the number Type
The following index definition examples use collections in the [sample data](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets. After you [load the sample data](https://www.mongodb.com/docs/atlas/import/load-sample-data.md#std-label-load-sample-data, you can use the Visual Editor or JSON (Javascript Object Notation) Editor to configure these indexes. After you select your preferred configuration method, select the database and collection, and refine your index to add field mappings.
Representation Example
The following index definition for the sample_analytics.accounts collection in the [sample dataset](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets indexes the account_id field with 64-bit integer values. The following example also:
-
Indexes all other integer values in the
account_idfield. -
Rounds any decimal values and indexes small double type values in the
account_idfield.
Visual Editor
Use the Visual Editor for an interactive experience.
-
In the Add Field Mapping window, select account_id from the Field Name dropdown.
-
Click the Data Type dropdown and select Number.
-
Modify the Number Properties to set the following:
-
Representation to
int64. -
Index Integers to
true. -
Index Doubles to
true. -
Click Add.
JSON Editor
Use the JSON Editor to edit the raw JSON.
Replace the default index definition with the following index definition.
{
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64"
}
}
}
}
You can use the MongoDB Search number type to index fields with numeric values of int32, int64, and double data types. You can use the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators to query indexed fields of type number. You can also run a [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref query on number type fields.
Note:
To query numeric values in arrays, you can use only the [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref operator.
MongoDB Search automatically indexes all numeric fields in indexes created after [July 2023](https://www.mongodb.com/docs/atlas/search-changelog.md#std-label-fts20230710 for [sorting](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref the MongoDB Search results. For preexisting indexes, you must rebuild the index to use number fields in the index for sorting. To learn more, see [Update and Rebuild an Existing MongoDB Search Index](https://www.mongodb.com/docs/search/indexes/manage-indexes.md#std-label-fts-index-rebuild and [Sort MongoDB Search Results.](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref
If you enable [dynamic mappings](https://www.mongodb.com/docs/search/indexes/define-field-mappings.md#std-label-static-dynamic-mappings, MongoDB Search automatically indexes fields of type number. You can use the Visual Editor or the JSON Editor in the Atlas UI to index fields as the number type.
Define the Index for the number Type
- Set up the C project.
In your terminal, navigate to where you want to create your application, then run the following command to create a directory called atlas-search-project for this project:
shell
# Create a new directory for the project
mkdir atlas-search-project && cd atlas-search-project
Add the C driver to your project by following the instructions in the MongoDB C Driver documentation.
- Define the index.
Create a create_index.c file in your project directory, and copy and paste the following code into the file.
```c
#include
int main (void) { mongoc_client_t client = NULL; mongoc_collection_t collection = NULL; mongoc_database_t *database = NULL; bson_error_t error; bson_t cmd = BSON_INITIALIZER; bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Specify the command and the new index
const char *cmd_str = BSON_STR({
"createSearchIndexes" : "<collectionName>",
"indexes" : [ {
"name" : "default",
"definition" : {
"mappings": {
"dynamic": true|false,
"fields": {
"<fieldName>" : {
"type": "number",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
},
}
} ]
});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Create the MongoDB Search index by running the command
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run createSearchIndexes: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Index created!\n");
cleanup: mongoc_collection_destroy (collection); mongoc_client_destroy (client); mongoc_database_destroy (database); bson_destroy (&cmd); mongoc_cleanup (); return ok ? EXIT_SUCCESS : EXIT_FAILURE; } ```
Replace <connection-string> with the connection string for your Atlas cluster or local Atlas deployment.
To learn more about finding your connection string, see [Connect to a Cluster via Client Libraries.](https://www.mongodb.com/docs/atlas/driver-connection.md#std-label-connect-via-driver
Note:
For a local or self-managed deployment, your connection string should use the following format:
text
mongodb://localhost:<port-number>/?directConnection=true
To learn more, see [Connection Strings.](https://www.mongodb.com/docs/manual/reference/connection-string.md#std-label-mongodb-uri
- Set up a CMake application
To configure your application, create a CMakeLists.txt file in your project directory. Then, add the following code to the file:
```txt
cmake_minimum_required(VERSION 3.11)
project(atlas-search-index LANGUAGES C)
add_executable (index.out create_index.c)
find_package(mongoc
```
The preceding code performs the following actions:
-
Configures a C project.
-
Creates a
index.outexecutable for your application. -
Finds and requires the C driver. Replace the
<version>placeholder with your C driver version number, such as2.0.0. -
Links the program to the
libmongoclibrary.
Note:
In the sample CMakeLists.txt file, the mongoc::mongoc target points to either the static library or the shared library. The library type depends on which one is available and whichever type the user specifies in the MONGOC_DEFAULT_IMPORTED_LIBRARY_TYPE CMake configuration setting. If you don't set this value and both library types are available, mongoc::mongoc uses the static library.
You can use the mongoc::static target to explicitly use the static library or the mongoc::shared target to use the shared library.
- Create the index.
In your terminal, run the following commands to build and run this application:
shell
cmake -S. -Bcmake-build
cmake --build cmake-build --target index.out
./cmake-build/index.out
Output:
text
Index created!
Configure number Field Properties
The MongoDB Search number type has the following parameters:
| UI Field Name | JSON Option | Type | Necessity | Description | Default |
|---|---|---|---|---|---|
| Data Type | type |
string | Required | Human-readable label that identifies this field type. Value must be number. |
|
| Representation | representation |
string | Optional | Data type of the field to index. Values are: int64 - for indexing large integers without loss of precision and for rounding double values to integers. You can't use this type to index large double values.; double - for indexing large double values without rounding. |
double |
| Index Integers | indexIntegers |
boolean | Optional | Flag that indicates whether to index or omit indexing int32 and int64 type values. Value can be true or false. Either this or indexDoubles must be true. |
true |
| Index Doubles | indexDoubles |
boolean | Optional | Flag that indicates whether to index or omit indexing double type values. Value can be true or false. Either this or indexIntegers must be true. |
true |
Try an Example for the number Type
The following index definition examples use collections in the [sample data](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets. After you [load the sample data](https://www.mongodb.com/docs/atlas/import/load-sample-data.md#std-label-load-sample-data, you can use these examples to index fields as the number type.
To learn how to set up and run the following example code, see [Define the Index for the token Type](https://www.mongodb.com/docs/search/indexes/field-types/token-type.md#std-label-define-index-token-admin-api.
Representation Example
The following index definition for the sample_analytics.accounts collection in the [sample dataset](https://www.mongodb.com/docs/manual/sample-data.md#std-label-available-sample-datasets indexes the account_id field with 64-bit integer values. The following example also:
-
Indexes all other integer values in the
account_idfield. -
Rounds any decimal values and indexes small double type values in the
account_idfield.
#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "sample_analytics");
collection = mongoc_database_get_collection(database, "accounts");
// Specify the command and the new index
const char *cmd_str = BSON_STR({
"createSearchIndexes" : "<collectionName>",
"indexes" : [ {
"name" : "default",
"definition" : {
"mappings": {
"dynamic": true|false,
"fields": {
"account_id" : {
"type": "number",
"representation": "int64"
}
}
},
}
} ]
});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Create the MongoDB Search index by running the command
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run createSearchIndexes: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Index created!\n");
cleanup:
mongoc_collection_destroy (collection);
mongoc_client_destroy (client);
mongoc_database_destroy (database);
bson_destroy (&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}
You can use the MongoDB Search number type to index fields with numeric values of int32, int64, and double data types. You can use the [equals](https://www.mongodb.com/docs/search/query/operators-collectors/equals.md#std-label-equals-ref, [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref, and [near](https://www.mongodb.com/docs/search/query/operators-collectors/near.md#std-label-near-ref operators to query indexed fields of type number. You can also run a [facet](https://www.mongodb.com/docs/search/query/operators-collectors/facet.md#std-label-fts-facet-ref query on number type fields.
Note:
To query numeric values in arrays, you can use only the [range](https://www.mongodb.com/docs/search/query/operators-collectors/range.md#std-label-range-ref operator.
MongoDB Search automatically indexes all numeric fields in indexes created after [July 2023](https://www.mongodb.com/docs/atlas/search-changelog.md#std-label-fts20230710 for [sorting](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref the MongoDB Search results. For preexisting indexes, you must rebuild the index to use number fields in the index for sorting. To learn more, see [Update and Rebuild an Existing MongoDB Search Index](https://www.mongodb.com/docs/search/indexes/manage-indexes.md#std-label-fts-index-rebuild and [Sort MongoDB Search Results.](https://www.mongodb.com/docs/search/query/sort.md#std-label-sort-ref
If you enable [dynamic mappings](https://www.mongodb.com/docs/search/indexes/define-field-mappings.md#std-label-static-dynamic-mappings, MongoDB Search automatically indexes fields of type number. You can use the Visual Editor or the JSON Editor in the Atlas UI to index fields as the number type.
Define the Index for the number Type
- Set up and initialize the .NET/C# project.
In your terminal, navigate to where you want to create your application, then run the following command to create a directory called atlas-search-project and initialize your project in that directory:
```shell # Create a new directory and initialize the project mkdir atlas-search-project && cd atlas-search-project dotnet new console
# Add the MongoDB .NET/C# Driver to your project dotnet add package MongoDB.Driver ```
For more detailed installation instructions, see the MongoDB .NET/C# Driver documentation.
- Define the index.
Paste the following code into the Program.cs file.
```csharp using MongoDB.Bson; using MongoDB.Driver;
// connect to your Atlas deployment var uri = "<connection-string>";
var client = new MongoClient(uri);
var db = client.GetDatabase("<database>"); var collection = db.GetCollection<BsonDocument>("<collection>");
// define your MongoDB Search index var index = new CreateSearchIndexModel( "default", new BsonDocument { { "mappings", new BsonDocument { { "dynamic", true|false }, { "fields", new BsonDocument { { "<field-name>", new BsonDocument { { "type", "number" }, { "representation", "int64|double" }, { "indexIntegers", true|false }, { "indexDoubles", true|false } } } } } } } });
var result = collection.SearchIndexes.CreateOne(index); Console.WriteLine($"New index name: {result}"); ``
(本文超出站点单文档体积上限,已截断)
