modernFindAndModify method

Future<FindAndModifyResult> modernFindAndModify({
  1. dynamic query,
  2. dynamic sort,
  3. bool? remove,
  4. dynamic update,
  5. bool? returnNew,
  6. dynamic fields,
  7. bool? upsert,
  8. List? arrayFilters,
  9. String? hint,
  10. Map<String, Object>? hintDocument,
  11. FindAndModifyOptions? findAndModifyOptions,
  12. Map<String, Object>? rawOptions,
})

Implementation

Future<FindAndModifyResult> modernFindAndModify(
    {query,
    sort,
    bool? remove,
    update,
    bool? returnNew,
    fields,
    bool? upsert,
    List? arrayFilters,
    String? hint,
    Map<String, Object>? hintDocument,
    FindAndModifyOptions? findAndModifyOptions,
    Map<String, Object>? rawOptions}) async {
  if (!db._masterConnectionVerified.serverCapabilities.supportsOpMsg) {
    throw MongoDartError('This method is not available before release 3.6');
  }

  Map<String, Object>? sortMap;
  if (sort is Map) {
    sortMap = <String, Object>{...sort};
  } else if (sort is SelectorBuilder && sort.map[keyOrderby] != null) {
    sortMap = <String, Object>{...sort.map[keyOrderby]};
  }

  var famOperation = FindAndModifyOperation(this,
      query: query == null ? null : _queryBuilder2Map(query),
      sort: sortMap,
      remove: remove,
      update: update == null
          ? null
          : (update is List ? update : _updateBuilder2Map(update)),
      returnNew: returnNew,
      fields: _fieldsBuilder2Map(fields),
      upsert: upsert,
      arrayFilters: arrayFilters,
      hint: hint,
      hintDocument: hintDocument,
      findAndModifyOptions: findAndModifyOptions,
      rawOptions: rawOptions);
  return famOperation.executeDocument();
}