CRUD & Aggregation APIs
On this page
Overview
This page lists MongoDB data source support for MongoDB commands, operators, options, and aggregation stages.
For information on how to read and write data in MongoDB from a function, see Query MongoDB Atlas.
For more information on supported features and limitations, see Service Limitations.
Note
Support for an operation may depend on whether you're running the operation as an application user or as a system user.
A user function runs in the context of a specific application user and enforces data access permissions and schema validation, which makes some operations untenable.
A system function runs as a generic system user and is not subject to rules or schema validation. Some operations are only available in system functions.
CRUD Operations
Query Operators
Atlas App Services supports most query operators for queries that run in a user function. However, some evaluation operators and all geospatial and bitwise operators are only available in system functions.
Comparison Operator Availability
Logical Operator Availability
Array Operator Availability
Operation | User Function | System Function |
---|---|---|
Yes | Yes | |
Yes | Yes | |
Yes | Yes |
Element Operator Availability
Evaluation Operator Availability
Geospatial Operator Availability
Operation | User Function | System Function |
---|---|---|
No | Yes | |
No | Yes | |
No | Yes | |
No | Yes |
Bitwise Operator Availability
Operation | User Function | System Function |
---|---|---|
No | Yes | |
No | Yes | |
No | Yes | |
No | Yes |
Update Operators
App Services supports most update operators for queries that run in a user function. However, some array update operators are only available in system functions.
Field Update Operator Availability
Operation | User Function | System Function |
---|---|---|
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes |
Array Update Operator Availability
Operation | User Function | System Function |
---|---|---|
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes | |
Yes | Yes |
Array Update Operator Modifiers Availability
Bitwise Update Operator Availability
Operator | User Function | System Function |
---|---|---|
Yes | Yes |
Bulk Write Operations
App Services supports bulk write operations using the same API as the MongoDB Node.js driver.
Tip
App Services also provides the collection.bulkWrite()
method for performing bulk write operations.
Ordered Bulk Write Operation Availability
You define ordered bulk operations by calling collection.initializeOrderedBulkOp() and manipulating the OrderedBulkOperation object that it returns.
App Services supports the following OrderedBulkOperation
methods:
Unordered Bulk Write Operation Availability
You define unordered bulk operations by calling collection.initializeUnorderedBulkOp() and manipulating the OrderedBulkOperation object that it returns.
App Services supports the following UnorderedBulkOperation
methods:
Query Options
App Services does not support configuring the following options for any CRUD operation in user functions. All query options are available in system functions.
Query Option Availability
Option | User Context | System Context |
---|---|---|
No | Yes | |
No | Yes | |
No | Yes |
Aggregation
Aggregation Methods
App Services supports aggregation on the both the database and collection level using the following commands:
Aggregation Pipeline Stage Availability
All aggregation pipeline stages
stages are available to the system user except for $indexStats
. However,
App Services does not support the following aggregation pipeline stages
when you run an aggregation pipeline in the context
of an application user.
Operation | Notes |
---|---|
By default, $merge and $out route the entire aggregation operation tothe cluster's primary node. If you want to force these stages to respect your configured cluster read preference, set the enforceReadPref option totrue . | |
App Services performs $search operations as a system user andenforces field-level rules on the returned search results. This means that a user may search on a field for which they do not have read access. In this case, the search is based on the specified field but no returned documents include the field. The $$SEARCH_META aggregation variable is only available for functions that run as system or if the first role on the searched collection has its apply_when and read expressions set to true .If neither of these two scenarios apply, $$SEARCH_META is undefinedand the aggregation will fail. | |
Aggregation Pipeline Operator Availability
App Services supports all aggregation pipeline operators when you run an aggregation pipeline in the system user context.
App Services supports all pipeline operators in an application user context except for the following operators:
Database Commands
App Services does not support any database commands in the Client SDKs or Functions. You can, however, call a limited subset of database commands when connected to a MongoDB cluster over the App Services wire protocol.
The following database commands are partially supported over the wire protocol. Unsupported options for each command are listed below.
Note
App Services Apps cannot run commands on the admin
database.
Database Command Availability
Command | Unsupported Options | App Services-Specific Options |
---|---|---|
| ||
|
| |
| ||
| ||
| ||
|
[1] | App Services supports allowDiskUse when run in a Function or
Trigger with system-level permissions. |