summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
Diffstat (limited to 'jstests')
-rw-r--r--jstests/core/SERVER-23626.js5
-rw-r--r--jstests/core/add_skip_stage_before_fetch.js6
-rw-r--r--jstests/core/agg_hint.js6
-rw-r--r--jstests/core/all2.js5
-rw-r--r--jstests/core/all4.js3
-rw-r--r--jstests/core/and3.js7
-rw-r--r--jstests/core/andor.js3
-rw-r--r--jstests/core/array4.js5
-rw-r--r--jstests/core/array_comparison_correctness.js3
-rw-r--r--jstests/core/array_index_and_nonIndex_consistent.js3
-rw-r--r--jstests/core/array_match1.js5
-rw-r--r--jstests/core/array_match4.js3
-rw-r--r--jstests/core/arrayfind1.js5
-rw-r--r--jstests/core/arrayfind3.js5
-rw-r--r--jstests/core/arrayfind4.js5
-rw-r--r--jstests/core/arrayfind5.js3
-rw-r--r--jstests/core/arrayfind8.js3
-rw-r--r--jstests/core/arrayfind9.js3
-rw-r--r--jstests/core/arrayfinda.js3
-rw-r--r--jstests/core/arrayfindb.js3
-rw-r--r--jstests/core/awaitdata_getmore_cmd.js1
-rw-r--r--jstests/core/basic2.js6
-rw-r--r--jstests/core/batch_size.js6
-rw-r--r--jstests/core/bindata_indexonly.js3
-rw-r--r--jstests/core/bittest.js3
-rw-r--r--jstests/core/bulk_insert_capped.js9
-rw-r--r--jstests/core/bypass_doc_validation.js3
-rw-r--r--jstests/core/collation.js3
-rw-r--r--jstests/core/collation_plan_cache.js1
-rw-r--r--jstests/core/command_let_variables.js5
-rw-r--r--jstests/core/comment_field.js1
-rw-r--r--jstests/core/constructors.js1
-rw-r--r--jstests/core/contained_or_with_nested_or.js3
-rw-r--r--jstests/core/coveredIndex1.js5
-rw-r--r--jstests/core/coveredIndex2.js6
-rw-r--r--jstests/core/coveredIndex3.js1
-rw-r--r--jstests/core/coveredIndex4.js5
-rw-r--r--jstests/core/covered_index_compound_1.js5
-rw-r--r--jstests/core/covered_index_negative_1.js5
-rw-r--r--jstests/core/covered_index_simple_1.js5
-rw-r--r--jstests/core/covered_index_simple_2.js5
-rw-r--r--jstests/core/covered_index_simple_3.js5
-rw-r--r--jstests/core/covered_index_simple_id.js5
-rw-r--r--jstests/core/covered_index_sort_1.js5
-rw-r--r--jstests/core/covered_index_sort_2.js5
-rw-r--r--jstests/core/covered_index_sort_3.js5
-rw-r--r--jstests/core/covered_index_sort_no_fetch_optimization.js7
-rw-r--r--jstests/core/covered_multikey.js5
-rw-r--r--jstests/core/currentop_cursors.js7
-rw-r--r--jstests/core/cursor3.js3
-rw-r--r--jstests/core/cursor6.js3
-rw-r--r--jstests/core/cursora.js1
-rw-r--r--jstests/core/dbref2.js5
-rw-r--r--jstests/core/dbref3.js3
-rw-r--r--jstests/core/dbref4.js3
-rw-r--r--jstests/core/depth_limit.js5
-rw-r--r--jstests/core/distinct3.js1
-rw-r--r--jstests/core/distinct_compound_index.js6
-rw-r--r--jstests/core/distinct_index1.js5
-rw-r--r--jstests/core/distinct_multikey.js3
-rw-r--r--jstests/core/distinct_multikey_dotted_path.js6
-rw-r--r--jstests/core/distinct_with_hashed_index.js1
-rw-r--r--jstests/core/dotted_path_in_null.js5
-rw-r--r--jstests/core/elemMatchProjection.js1
-rw-r--r--jstests/core/elemmatch_or_pushdown.js3
-rw-r--r--jstests/core/ensure_sorted.js6
-rw-r--r--jstests/core/exists.js5
-rw-r--r--jstests/core/exists2.js5
-rw-r--r--jstests/core/exists3.js3
-rw-r--r--jstests/core/exists6.js3
-rw-r--r--jstests/core/exists9.js3
-rw-r--r--jstests/core/existsa.js3
-rw-r--r--jstests/core/explain1.js5
-rw-r--r--jstests/core/explain4.js3
-rw-r--r--jstests/core/explain5.js5
-rw-r--r--jstests/core/explain6.js6
-rw-r--r--jstests/core/explain_agg_write_concern.js1
-rw-r--r--jstests/core/explain_batch_size.js5
-rw-r--r--jstests/core/explain_distinct.js5
-rw-r--r--jstests/core/explain_execution_error.js6
-rw-r--r--jstests/core/explain_find.js3
-rw-r--r--jstests/core/explain_large_bounds.js5
-rw-r--r--jstests/core/explain_missing_collection.js5
-rw-r--r--jstests/core/explain_missing_database.js3
-rw-r--r--jstests/core/explain_multi_plan.js9
-rw-r--r--jstests/core/explain_multikey.js5
-rw-r--r--jstests/core/explain_shell_helpers.js1
-rw-r--r--jstests/core/explain_sort_type.js1
-rw-r--r--jstests/core/explain_validation.js5
-rw-r--r--jstests/core/explode_for_sort_collation.js5
-rw-r--r--jstests/core/explode_for_sort_fetch.js5
-rw-r--r--jstests/core/expr.js5
-rw-r--r--jstests/core/expr_index_use.js3
-rw-r--r--jstests/core/expr_or_pushdown.js3
-rw-r--r--jstests/core/field_name_validation.js5
-rw-r--r--jstests/core/find6.js8
-rw-r--r--jstests/core/find_and_modify_server6865.js1
-rw-r--r--jstests/core/find_dedup.js5
-rw-r--r--jstests/core/find_getmore_bsonsize.js5
-rw-r--r--jstests/core/find_getmore_cmd.js5
-rw-r--r--jstests/core/find_size.js3
-rw-r--r--jstests/core/finda.js1
-rw-r--r--jstests/core/fts1.js5
-rw-r--r--jstests/core/fts2.js5
-rw-r--r--jstests/core/fts3.js5
-rw-r--r--jstests/core/fts4.js5
-rw-r--r--jstests/core/fts5.js5
-rw-r--r--jstests/core/fts6.js3
-rw-r--r--jstests/core/fts_array.js3
-rw-r--r--jstests/core/fts_blog.js3
-rw-r--r--jstests/core/fts_blogwild.js5
-rw-r--r--jstests/core/fts_casesensitive.js3
-rw-r--r--jstests/core/fts_diacritic_and_caseinsensitive.js3
-rw-r--r--jstests/core/fts_diacritic_and_casesensitive.js3
-rw-r--r--jstests/core/fts_diacriticsensitive.js3
-rw-r--r--jstests/core/fts_dotted_prefix_fields.js3
-rw-r--r--jstests/core/fts_explain.js5
-rw-r--r--jstests/core/fts_find_and_modify.js1
-rw-r--r--jstests/core/fts_index.js16
-rw-r--r--jstests/core/fts_index2.js6
-rw-r--r--jstests/core/fts_index3.js5
-rw-r--r--jstests/core/fts_index_version1.js3
-rw-r--r--jstests/core/fts_index_version2.js3
-rw-r--r--jstests/core/fts_index_wildcard_and_weight.js3
-rw-r--r--jstests/core/fts_mix.js3
-rw-r--r--jstests/core/fts_partition1.js5
-rw-r--r--jstests/core/fts_partition_no_multikey.js5
-rw-r--r--jstests/core/fts_phrase.js5
-rw-r--r--jstests/core/fts_proj.js3
-rw-r--r--jstests/core/fts_projection.js3
-rw-r--r--jstests/core/fts_querylang.js5
-rw-r--r--jstests/core/fts_score_sort.js3
-rw-r--r--jstests/core/fts_spanish.js5
-rw-r--r--jstests/core/fts_trailing_fields.js3
-rw-r--r--jstests/core/function_string_representations.js1
-rw-r--r--jstests/core/geo1.js6
-rw-r--r--jstests/core/geo10.js5
-rw-r--r--jstests/core/geo2.js6
-rw-r--r--jstests/core/geo3.js6
-rw-r--r--jstests/core/geo6.js5
-rw-r--r--jstests/core/geo7.js5
-rw-r--r--jstests/core/geo9.js5
-rw-r--r--jstests/core/geo_2d_explain.js5
-rw-r--r--jstests/core/geo_2d_trailing_fields.js3
-rw-r--r--jstests/core/geo_2d_with_geojson_point.js5
-rw-r--r--jstests/core/geo_allowedcomparisons.js3
-rw-r--r--jstests/core/geo_array0.js5
-rw-r--r--jstests/core/geo_array1.js3
-rw-r--r--jstests/core/geo_array2.js3
-rw-r--r--jstests/core/geo_big_polygon.js6
-rw-r--r--jstests/core/geo_big_polygon2.js6
-rw-r--r--jstests/core/geo_big_polygon3.js1
-rw-r--r--jstests/core/geo_borders.js3
-rw-r--r--jstests/core/geo_box1.js5
-rw-r--r--jstests/core/geo_box1_noindex.js5
-rw-r--r--jstests/core/geo_box2.js5
-rw-r--r--jstests/core/geo_box3.js3
-rw-r--r--jstests/core/geo_center_sphere1.js6
-rw-r--r--jstests/core/geo_center_sphere2.js5
-rw-r--r--jstests/core/geo_circle1.js6
-rw-r--r--jstests/core/geo_circle1_noindex.js3
-rw-r--r--jstests/core/geo_circle2.js5
-rw-r--r--jstests/core/geo_circle2a.js3
-rw-r--r--jstests/core/geo_circle3.js3
-rw-r--r--jstests/core/geo_circle4.js3
-rw-r--r--jstests/core/geo_circle5.js5
-rw-r--r--jstests/core/geo_distinct.js5
-rw-r--r--jstests/core/geo_exactfetch.js3
-rw-r--r--jstests/core/geo_fiddly_box.js5
-rw-r--r--jstests/core/geo_fiddly_box2.js3
-rw-r--r--jstests/core/geo_haystack1.js5
-rw-r--r--jstests/core/geo_haystack2.js5
-rw-r--r--jstests/core/geo_haystack3.js5
-rw-r--r--jstests/core/geo_invalid_2d_params.js5
-rw-r--r--jstests/core/geo_invalid_polygon.js3
-rw-r--r--jstests/core/geo_max.js3
-rw-r--r--jstests/core/geo_mindistance.js6
-rw-r--r--jstests/core/geo_mindistance_boundaries.js5
-rw-r--r--jstests/core/geo_multikey0.js3
-rw-r--r--jstests/core/geo_multikey1.js3
-rw-r--r--jstests/core/geo_multinest0.js5
-rw-r--r--jstests/core/geo_multinest1.js5
-rw-r--r--jstests/core/geo_near_bounds_overflow.js3
-rw-r--r--jstests/core/geo_near_random1.js3
-rw-r--r--jstests/core/geo_near_random2.js3
-rw-r--r--jstests/core/geo_near_tailable.js5
-rw-r--r--jstests/core/geo_nearwithin.js3
-rw-r--r--jstests/core/geo_oob_sphere.js3
-rw-r--r--jstests/core/geo_operator_crs.js5
-rw-r--r--jstests/core/geo_or.js3
-rw-r--r--jstests/core/geo_poly_edge.js3
-rw-r--r--jstests/core/geo_poly_line.js3
-rw-r--r--jstests/core/geo_polygon1.js3
-rw-r--r--jstests/core/geo_polygon1_noindex.js3
-rw-r--r--jstests/core/geo_polygon2.js5
-rw-r--r--jstests/core/geo_polygon3.js3
-rw-r--r--jstests/core/geo_queryoptimizer.js5
-rw-r--r--jstests/core/geo_regex0.js3
-rw-r--r--jstests/core/geo_s2cursorlimitskip.js5
-rw-r--r--jstests/core/geo_s2dedupnear.js3
-rw-r--r--jstests/core/geo_s2descindex.js5
-rw-r--r--jstests/core/geo_s2disjoint_holes.js5
-rw-r--r--jstests/core/geo_s2dupe_points.js3
-rw-r--r--jstests/core/geo_s2edgecases.js3
-rw-r--r--jstests/core/geo_s2exact.js3
-rw-r--r--jstests/core/geo_s2explain.js3
-rw-r--r--jstests/core/geo_s2holesameasshell.js3
-rw-r--r--jstests/core/geo_s2index.js3
-rw-r--r--jstests/core/geo_s2indexoldformat.js3
-rw-r--r--jstests/core/geo_s2indexversion1.js5
-rw-r--r--jstests/core/geo_s2intersection.js5
-rw-r--r--jstests/core/geo_s2largewithin.js3
-rw-r--r--jstests/core/geo_s2meridian.js5
-rw-r--r--jstests/core/geo_s2multi.js3
-rw-r--r--jstests/core/geo_s2near.js5
-rw-r--r--jstests/core/geo_s2nearComplex.js6
-rw-r--r--jstests/core/geo_s2near_equator_opposite.js3
-rw-r--r--jstests/core/geo_s2nearcorrect.js3
-rw-r--r--jstests/core/geo_s2nearwithin.js3
-rw-r--r--jstests/core/geo_s2nongeoarray.js3
-rw-r--r--jstests/core/geo_s2nonstring.js3
-rw-r--r--jstests/core/geo_s2nopoints.js3
-rw-r--r--jstests/core/geo_s2oddshapes.js3
-rw-r--r--jstests/core/geo_s2ordering.js6
-rw-r--r--jstests/core/geo_s2overlappingpolys.js5
-rw-r--r--jstests/core/geo_s2polywithholes.js5
-rw-r--r--jstests/core/geo_s2selfintersectingpoly.js5
-rw-r--r--jstests/core/geo_s2sparse.js3
-rw-r--r--jstests/core/geo_s2twofields.js6
-rw-r--r--jstests/core/geo_s2validindex.js3
-rw-r--r--jstests/core/geo_s2within.js3
-rw-r--r--jstests/core/geo_s2within_line_polygon_sphere.js3
-rw-r--r--jstests/core/geo_small_large.js3
-rw-r--r--jstests/core/geo_sort1.js5
-rw-r--r--jstests/core/geo_uniqueDocs.js3
-rw-r--r--jstests/core/geo_uniqueDocs2.js5
-rw-r--r--jstests/core/geo_update.js5
-rw-r--r--jstests/core/geo_update1.js5
-rw-r--r--jstests/core/geo_update2.js5
-rw-r--r--jstests/core/geo_update_btree.js1
-rw-r--r--jstests/core/geo_update_btree2.js1
-rw-r--r--jstests/core/geo_update_dedup.js6
-rw-r--r--jstests/core/geo_validate.js3
-rw-r--r--jstests/core/geo_withinquery.js5
-rw-r--r--jstests/core/geoa.js5
-rw-r--r--jstests/core/geob.js5
-rw-r--r--jstests/core/geoc.js5
-rw-r--r--jstests/core/geod.js3
-rw-r--r--jstests/core/geoe.js3
-rw-r--r--jstests/core/geof.js3
-rw-r--r--jstests/core/geonear_cmd_input_validation.js3
-rw-r--r--jstests/core/geonear_key.js3
-rw-r--r--jstests/core/getlog2.js1
-rw-r--r--jstests/core/getmore_cmd_maxtimems.js7
-rw-r--r--jstests/core/getmore_invalidated_cursors.js9
-rw-r--r--jstests/core/getmore_invalidated_documents.js7
-rw-r--r--jstests/core/grow_hash_table.js5
-rw-r--r--jstests/core/hashed_index_collation.js1
-rw-r--r--jstests/core/hashed_index_covered_queries.js1
-rw-r--r--jstests/core/hashed_index_queries.js3
-rw-r--r--jstests/core/hashed_index_queries_with_logical_operators.js3
-rw-r--r--jstests/core/hashed_index_sort.js9
-rw-r--r--jstests/core/hashed_partial_and_sparse_index.js3
-rw-r--r--jstests/core/hidden_index.js4
-rw-r--r--jstests/core/idhack.js1
-rw-r--r--jstests/core/in.js3
-rw-r--r--jstests/core/in5.js5
-rw-r--r--jstests/core/index13.js6
-rw-r--r--jstests/core/index2.js5
-rw-r--r--jstests/core/index4.js5
-rw-r--r--jstests/core/index_bounds_code.js6
-rw-r--r--jstests/core/index_bounds_maxkey.js1
-rw-r--r--jstests/core/index_bounds_minkey.js1
-rw-r--r--jstests/core/index_bounds_object.js6
-rw-r--r--jstests/core/index_bounds_pipe.js3
-rw-r--r--jstests/core/index_bounds_timestamp.js3
-rw-r--r--jstests/core/index_check2.js6
-rw-r--r--jstests/core/index_check3.js5
-rw-r--r--jstests/core/index_check6.js5
-rw-r--r--jstests/core/index_check7.js5
-rw-r--r--jstests/core/index_decimal.js5
-rw-r--r--jstests/core/index_diag.js1
-rw-r--r--jstests/core/index_elemmatch1.js5
-rw-r--r--jstests/core/index_elemmatch2.js3
-rw-r--r--jstests/core/index_filter_catalog_independent.js4
-rw-r--r--jstests/core/index_filter_collation.js5
-rw-r--r--jstests/core/index_filter_commands.js5
-rw-r--r--jstests/core/index_filter_on_hidden_index.js5
-rw-r--r--jstests/core/index_large_and_small_dates.js3
-rw-r--r--jstests/core/index_multikey.js3
-rw-r--r--jstests/core/index_partial_2dsphere.js5
-rw-r--r--jstests/core/index_partial_read_ops.js7
-rw-r--r--jstests/core/index_sort_within_multiple_point_ranges.js7
-rw-r--r--jstests/core/index_stats.js1
-rw-r--r--jstests/core/index_type_change.js5
-rw-r--r--jstests/core/indexes_multiple_commands.js5
-rw-r--r--jstests/core/indexf.js5
-rw-r--r--jstests/core/indexj.js5
-rw-r--r--jstests/core/indexn.js3
-rw-r--r--jstests/core/indexr.js5
-rw-r--r--jstests/core/indexu.js5
-rw-r--r--jstests/core/introspect_hidden_index_plan_cache_entries.js5
-rw-r--r--jstests/core/invalidated_legacy_cursors.js9
-rw-r--r--jstests/core/js1.js8
-rw-r--r--jstests/core/js3.js3
-rw-r--r--jstests/core/js4.js5
-rw-r--r--jstests/core/js8.js5
-rw-r--r--jstests/core/json_schema/additional_items.js5
-rw-r--r--jstests/core/json_schema/additional_properties.js5
-rw-r--r--jstests/core/json_schema/bsontype.js5
-rw-r--r--jstests/core/json_schema/dependencies.js5
-rw-r--r--jstests/core/json_schema/encrypt.js1
-rw-r--r--jstests/core/json_schema/items.js5
-rw-r--r--jstests/core/json_schema/json_schema.js6
-rw-r--r--jstests/core/json_schema/logical_keywords.js5
-rw-r--r--jstests/core/json_schema/min_max_items.js5
-rw-r--r--jstests/core/json_schema/min_max_properties.js5
-rw-r--r--jstests/core/json_schema/misc_validation.js3
-rw-r--r--jstests/core/json_schema/pattern_properties.js5
-rw-r--r--jstests/core/json_schema/required.js5
-rw-r--r--jstests/core/json_schema/unique_items.js5
-rw-r--r--jstests/core/list_sessions.js1
-rw-r--r--jstests/core/map_reduce_validation.js1
-rw-r--r--jstests/core/min_max_bounds.js5
-rw-r--r--jstests/core/min_max_key.js3
-rw-r--r--jstests/core/mod1.js7
-rw-r--r--jstests/core/mod_overflow.js3
-rw-r--r--jstests/core/mr_agg_explain.js1
-rw-r--r--jstests/core/mr_bigobject.js1
-rw-r--r--jstests/core/mr_bigobject_replace.js1
-rw-r--r--jstests/core/mr_comments.js1
-rw-r--r--jstests/core/mr_compute_avg.js1
-rw-r--r--jstests/core/mr_correctness.js1
-rw-r--r--jstests/core/mr_fail_invalid_js.js1
-rw-r--r--jstests/core/mr_killop.js1
-rw-r--r--jstests/core/mr_merge.js1
-rw-r--r--jstests/core/mr_multikey_deduping.js1
-rw-r--r--jstests/core/mr_mutable_properties.js1
-rw-r--r--jstests/core/mr_null_arguments.js1
-rw-r--r--jstests/core/mr_preserve_indexes.js1
-rw-r--r--jstests/core/mr_reduce.js1
-rw-r--r--jstests/core/mr_reduce_merge_other_db.js1
-rw-r--r--jstests/core/mr_replace_into_other_db.js3
-rw-r--r--jstests/core/mr_scope.js1
-rw-r--r--jstests/core/mr_sort.js1
-rw-r--r--jstests/core/mr_stored.js1
-rw-r--r--jstests/core/mr_tolerates_js_exception.js1
-rw-r--r--jstests/core/mr_use_this_object.js1
-rw-r--r--jstests/core/multikey_geonear.js3
-rw-r--r--jstests/core/nan.js3
-rw-r--r--jstests/core/ne1.js5
-rw-r--r--jstests/core/ne2.js3
-rw-r--r--jstests/core/ne_array.js5
-rw-r--r--jstests/core/not2.js5
-rw-r--r--jstests/core/not3.js3
-rw-r--r--jstests/core/notablescan.js1
-rw-r--r--jstests/core/null_query_semantics.js3
-rw-r--r--jstests/core/numberlong2.js5
-rw-r--r--jstests/core/operation_latency_histogram.js7
-rw-r--r--jstests/core/optimized_match_explain.js5
-rw-r--r--jstests/core/or1.js5
-rw-r--r--jstests/core/or2.js3
-rw-r--r--jstests/core/or3.js3
-rw-r--r--jstests/core/or4.js1
-rw-r--r--jstests/core/or5.js5
-rw-r--r--jstests/core/or6.js3
-rw-r--r--jstests/core/or8.js5
-rw-r--r--jstests/core/or_inexact.js3
-rw-r--r--jstests/core/ord.js3
-rw-r--r--jstests/core/orf.js5
-rw-r--r--jstests/core/orj.js3
-rw-r--r--jstests/core/ork.js3
-rw-r--r--jstests/core/oro.js6
-rw-r--r--jstests/core/plan_cache_clear.js5
-rw-r--r--jstests/core/plan_cache_list_plans.js1
-rw-r--r--jstests/core/plan_cache_list_shapes.js9
-rw-r--r--jstests/core/plan_cache_shell_helpers.js1
-rw-r--r--jstests/core/plan_cache_stats_shard_and_host.js1
-rw-r--r--jstests/core/positional_projection_multiple_array_fields.js3
-rw-r--r--jstests/core/profile1.js1
-rw-r--r--jstests/core/profile2.js5
-rw-r--r--jstests/core/profile3.js1
-rw-r--r--jstests/core/profile_agg.js6
-rw-r--r--jstests/core/profile_count.js7
-rw-r--r--jstests/core/profile_delete.js7
-rw-r--r--jstests/core/profile_distinct.js6
-rw-r--r--jstests/core/profile_find.js6
-rw-r--r--jstests/core/profile_findandmodify.js5
-rw-r--r--jstests/core/profile_getmore.js7
-rw-r--r--jstests/core/profile_hide_index.js9
-rw-r--r--jstests/core/profile_insert.js1
-rw-r--r--jstests/core/profile_list_collections.js7
-rw-r--r--jstests/core/profile_list_indexes.js7
-rw-r--r--jstests/core/profile_mapreduce.js1
-rw-r--r--jstests/core/profile_query_hash.js5
-rw-r--r--jstests/core/profile_sampling.js7
-rw-r--r--jstests/core/profile_update.js7
-rw-r--r--jstests/core/proj_key1.js5
-rw-r--r--jstests/core/projection_dotted_paths.js5
-rw-r--r--jstests/core/projection_meta_index_key.js3
-rw-r--r--jstests/core/query_hash_stability.js3
-rw-r--r--jstests/core/queryoptimizera.js6
-rw-r--r--jstests/core/recursion.js1
-rw-r--r--jstests/core/ref.js3
-rw-r--r--jstests/core/regex.js5
-rw-r--r--jstests/core/regex3.js5
-rw-r--r--jstests/core/regex4.js5
-rw-r--r--jstests/core/regex6.js5
-rw-r--r--jstests/core/regex7.js3
-rw-r--r--jstests/core/regex8.js5
-rw-r--r--jstests/core/regex_embed1.js5
-rw-r--r--jstests/core/regexc.js3
-rw-r--r--jstests/core/remove9.js1
-rw-r--r--jstests/core/rename4.js1
-rw-r--r--jstests/core/rename_change_target_type.js3
-rw-r--r--jstests/core/return_key.js1
-rw-r--r--jstests/core/rollback_index_drop.js1
-rw-r--r--jstests/core/sample_rate.js5
-rw-r--r--jstests/core/server14747.js3
-rw-r--r--jstests/core/server14753.js3
-rw-r--r--jstests/core/server9547.js3
-rw-r--r--jstests/core/show_record_id.js5
-rw-r--r--jstests/core/single_field_hashed_index.js6
-rw-r--r--jstests/core/slice1.js3
-rw-r--r--jstests/core/sort1.js5
-rw-r--r--jstests/core/sort2.js3
-rw-r--r--jstests/core/sort5.js3
-rw-r--r--jstests/core/sort6.js5
-rw-r--r--jstests/core/sort8.js3
-rw-r--r--jstests/core/sort9.js3
-rw-r--r--jstests/core/sort_array.js1
-rw-r--r--jstests/core/sort_with_meta_operator.js3
-rw-r--r--jstests/core/sorta.js3
-rw-r--r--jstests/core/sortb.js3
-rw-r--r--jstests/core/sortc.js3
-rw-r--r--jstests/core/sortd.js5
-rw-r--r--jstests/core/sortf.js5
-rw-r--r--jstests/core/sortg.js6
-rw-r--r--jstests/core/sorth.js3
-rw-r--r--jstests/core/sortj.js3
-rw-r--r--jstests/core/sortk.js10
-rw-r--r--jstests/core/sortl.js3
-rw-r--r--jstests/core/sparse_index_supports_ne_null.js7
-rw-r--r--jstests/core/stages_and_sorted.js1
-rw-r--r--jstests/core/stages_collection_scan.js1
-rw-r--r--jstests/core/stages_delete.js1
-rw-r--r--jstests/core/system_js_access.js1
-rw-r--r--jstests/core/tailable_cursor_invalidation.js6
-rw-r--r--jstests/core/tailable_getmore_batch_size.js6
-rw-r--r--jstests/core/tailable_skip_limit.js6
-rw-r--r--jstests/core/text_covered_matching.js5
-rw-r--r--jstests/core/ts1.js5
-rw-r--r--jstests/core/type3.js5
-rw-r--r--jstests/core/type_array.js5
-rw-r--r--jstests/core/update6.js5
-rw-r--r--jstests/core/update_affects_indexes.js3
-rw-r--r--jstests/core/update_arraymatch5.js6
-rw-r--r--jstests/core/update_arraymatch8.js5
-rw-r--r--jstests/core/update_with_pipeline.js6
-rw-r--r--jstests/core/views/dbref_projection.js1
-rw-r--r--jstests/core/views/views_aggregation.js1
-rw-r--r--jstests/core/views/views_all_commands.js3
-rw-r--r--jstests/core/views/views_collation.js7
-rw-r--r--jstests/core/views/views_count.js5
-rw-r--r--jstests/core/views/views_distinct.js3
-rw-r--r--jstests/core/views/views_find.js1
-rw-r--r--jstests/core/where1.js5
-rw-r--r--jstests/core/where2.js5
-rw-r--r--jstests/core/where5.js5
-rw-r--r--jstests/core/where_tolerates_js_exception.js1
-rw-r--r--jstests/core/wildcard_and_text_indexes.js5
-rw-r--r--jstests/core/wildcard_index_basic_index_bounds.js6
-rw-r--r--jstests/core/wildcard_index_cached_plans.js1
-rw-r--r--jstests/core/wildcard_index_collation.js9
-rw-r--r--jstests/core/wildcard_index_count.js6
-rw-r--r--jstests/core/wildcard_index_covered_queries.js1
-rw-r--r--jstests/core/wildcard_index_distinct_scan.js3
-rw-r--r--jstests/core/wildcard_index_empty_arrays.js3
-rw-r--r--jstests/core/wildcard_index_equality_to_empty_obj.js3
-rw-r--r--jstests/core/wildcard_index_filter.js5
-rw-r--r--jstests/core/wildcard_index_hint.js3
-rw-r--r--jstests/core/wildcard_index_multikey.js5
-rw-r--r--jstests/core/wildcard_index_nonblocking_sort.js5
-rw-r--r--jstests/core/wildcard_index_partial_index.js3
-rw-r--r--jstests/core/wildcard_index_return_key.js3
-rw-r--r--jstests/core/wildcard_index_type.js3
486 files changed, 1653 insertions, 281 deletions
diff --git a/jstests/core/SERVER-23626.js b/jstests/core/SERVER-23626.js
index 31f963bd313..16eea298e55 100644
--- a/jstests/core/SERVER-23626.js
+++ b/jstests/core/SERVER-23626.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
(function() {
"use strict";
diff --git a/jstests/core/add_skip_stage_before_fetch.js b/jstests/core/add_skip_stage_before_fetch.js
index 846cab46e1f..6bbefdb881f 100644
--- a/jstests/core/add_skip_stage_before_fetch.js
+++ b/jstests/core/add_skip_stage_before_fetch.js
@@ -3,7 +3,11 @@
// The skip operation in a sharded query always occurs in the mongoS, so this test doesn't make
// sense on a sharded collection.
-// @tags: [assumes_unsharded_collection, operations_longer_than_stepdown_interval_in_txns]
+// @tags: [
+// assumes_unsharded_collection,
+// operations_longer_than_stepdown_interval_in_txns,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/agg_hint.js b/jstests/core/agg_hint.js
index 10b3c6192d8..c6eea5159dc 100644
--- a/jstests/core/agg_hint.js
+++ b/jstests/core/agg_hint.js
@@ -1,6 +1,10 @@
// Cannot implicitly shard accessed collections because of collection existing when none
// expected.
-// @tags: [assumes_no_implicit_collection_creation_after_drop, does_not_support_stepdowns]
+// @tags: [
+// assumes_no_implicit_collection_creation_after_drop,
+// does_not_support_stepdowns,
+// sbe_incompatible,
+// ]
// Confirms correct behavior for hinted aggregation execution. This includes tests for scenarios
// where agg execution differs from query. It also includes confirmation that hint works for find
diff --git a/jstests/core/all2.js b/jstests/core/all2.js
index 4842460c4db..c6b4170a7ff 100644
--- a/jstests/core/all2.js
+++ b/jstests/core/all2.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.all2;
t.drop();
diff --git a/jstests/core/all4.js b/jstests/core/all4.js
index eb979289496..51773cbd542 100644
--- a/jstests/core/all4.js
+++ b/jstests/core/all4.js
@@ -1,4 +1,7 @@
// Test $all/$elemMatch with missing field - SERVER-4492
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_all4;
t.drop();
diff --git a/jstests/core/and3.js b/jstests/core/and3.js
index 942b04844a9..6fd8e63d910 100644
--- a/jstests/core/and3.js
+++ b/jstests/core/and3.js
@@ -1,8 +1,9 @@
// Check key match with sub matchers - part of SERVER-3192
// @tags: [
-// # Uses $where operator
-// requires_scripting,
-// assumes_balancer_off
+// assumes_balancer_off,
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.jstests_and3;
diff --git a/jstests/core/andor.js b/jstests/core/andor.js
index fb1ee98a448..36e0ff3177d 100644
--- a/jstests/core/andor.js
+++ b/jstests/core/andor.js
@@ -1,4 +1,7 @@
// SERVER-1089 Test and/or nesting
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_andor;
t.drop();
diff --git a/jstests/core/array4.js b/jstests/core/array4.js
index fe131a04ca9..556fd3c2717 100644
--- a/jstests/core/array4.js
+++ b/jstests/core/array4.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.array4;
t.drop();
diff --git a/jstests/core/array_comparison_correctness.js b/jstests/core/array_comparison_correctness.js
index 5fb1e6bad0e..6a44a7298f5 100644
--- a/jstests/core/array_comparison_correctness.js
+++ b/jstests/core/array_comparison_correctness.js
@@ -2,6 +2,9 @@
* Demonstrate the expected behavior of $lt and $gt comparisons involving arrays. This is only
* tested without an index, results between index and non-index behavior are compared in
* array_index_and_nonIndex_consistent.js
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
diff --git a/jstests/core/array_index_and_nonIndex_consistent.js b/jstests/core/array_index_and_nonIndex_consistent.js
index 4e57b73286d..7846032c21a 100644
--- a/jstests/core/array_index_and_nonIndex_consistent.js
+++ b/jstests/core/array_index_and_nonIndex_consistent.js
@@ -1,6 +1,9 @@
/**
* Make sure that $gt and $lt queries return the same results regardless of whether there is a
* multikey index.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
diff --git a/jstests/core/array_match1.js b/jstests/core/array_match1.js
index 9923677b8df..7f4b7593dd6 100644
--- a/jstests/core/array_match1.js
+++ b/jstests/core/array_match1.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.array_match1;
t.drop();
diff --git a/jstests/core/array_match4.js b/jstests/core/array_match4.js
index 821e9a4f4eb..c2de10ceff7 100644
--- a/jstests/core/array_match4.js
+++ b/jstests/core/array_match4.js
@@ -8,6 +8,9 @@ var query_gte = {a: {$gte: [1, 2]}};
//
// without index
//
+// @tags: [
+// sbe_incompatible,
+// ]
assert.eq(1, t.find({a: [1, 2]}).count(), '$eq (without index)');
assert.eq(1, t.find(query_gte).itcount(), '$gte (without index)');
diff --git a/jstests/core/arrayfind1.js b/jstests/core/arrayfind1.js
index e773eea24d6..6a129a6f805 100644
--- a/jstests/core/arrayfind1.js
+++ b/jstests/core/arrayfind1.js
@@ -1,4 +1,7 @@
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db.arrayfind1;
t.drop();
diff --git a/jstests/core/arrayfind3.js b/jstests/core/arrayfind3.js
index 07fbc3670d5..21974e834c5 100644
--- a/jstests/core/arrayfind3.js
+++ b/jstests/core/arrayfind3.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.arrayfind3;
t.drop();
diff --git a/jstests/core/arrayfind4.js b/jstests/core/arrayfind4.js
index 545f9e9acac..45edac7c595 100644
--- a/jstests/core/arrayfind4.js
+++ b/jstests/core/arrayfind4.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Test query empty array SERVER-2258
diff --git a/jstests/core/arrayfind5.js b/jstests/core/arrayfind5.js
index 3fba886b83a..9f8800a0c69 100644
--- a/jstests/core/arrayfind5.js
+++ b/jstests/core/arrayfind5.js
@@ -1,4 +1,7 @@
// Test indexed elemmatch of missing field.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_arrayfind5;
t.drop();
diff --git a/jstests/core/arrayfind8.js b/jstests/core/arrayfind8.js
index 87a3a8d701a..8800739925d 100644
--- a/jstests/core/arrayfind8.js
+++ b/jstests/core/arrayfind8.js
@@ -1,6 +1,9 @@
/**
* Matching behavior for $elemMatch applied to a top level element.
* Includes tests for bugs described in SERVER-1264 and SERVER-4180.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/arrayfind9.js b/jstests/core/arrayfind9.js
index 98396701dce..32c9c044d8d 100644
--- a/jstests/core/arrayfind9.js
+++ b/jstests/core/arrayfind9.js
@@ -1,4 +1,7 @@
// Assorted $elemMatch behavior checks.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_arrayfind9;
t.drop();
diff --git a/jstests/core/arrayfinda.js b/jstests/core/arrayfinda.js
index f2939d0c1ba..eb7cc06470c 100644
--- a/jstests/core/arrayfinda.js
+++ b/jstests/core/arrayfinda.js
@@ -1,4 +1,7 @@
// Assorted $elemMatch matching behavior checks.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_arrayfinda;
t.drop();
diff --git a/jstests/core/arrayfindb.js b/jstests/core/arrayfindb.js
index 483e1e46134..c9456509487 100644
--- a/jstests/core/arrayfindb.js
+++ b/jstests/core/arrayfindb.js
@@ -1,4 +1,7 @@
// Test $elemMatch object with complex embedded expressions.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_arrayfindb;
t.drop();
diff --git a/jstests/core/awaitdata_getmore_cmd.js b/jstests/core/awaitdata_getmore_cmd.js
index fae96fbdc91..93a9106e2e8 100644
--- a/jstests/core/awaitdata_getmore_cmd.js
+++ b/jstests/core/awaitdata_getmore_cmd.js
@@ -7,6 +7,7 @@
// assumes_read_preference_unchanged,
// requires_capped,
// requires_getmore,
+// sbe_incompatible,
// uses_multiple_connections,
// uses_parallel_shell,
// ]
diff --git a/jstests/core/basic2.js b/jstests/core/basic2.js
index 4d854d4b1ea..a4ed5905291 100644
--- a/jstests/core/basic2.js
+++ b/jstests/core/basic2.js
@@ -1,4 +1,8 @@
-// @tags: [requires_non_retryable_writes, requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
t = db.getCollection("basic2");
t.drop();
diff --git a/jstests/core/batch_size.js b/jstests/core/batch_size.js
index ac7e1177c41..11ea9cd2380 100644
--- a/jstests/core/batch_size.js
+++ b/jstests/core/batch_size.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test subtleties of batchSize and limit.
diff --git a/jstests/core/bindata_indexonly.js b/jstests/core/bindata_indexonly.js
index f0d645db7e7..566ccb9369e 100644
--- a/jstests/core/bindata_indexonly.js
+++ b/jstests/core/bindata_indexonly.js
@@ -2,6 +2,9 @@
* This test ensures that range predicates with a BinData value:
* 1) Return the correct documents.
* 2) Can perform index-only data access.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
'use strict';
diff --git a/jstests/core/bittest.js b/jstests/core/bittest.js
index 1ac5ddbe59b..b23b2aa6821 100644
--- a/jstests/core/bittest.js
+++ b/jstests/core/bittest.js
@@ -1,5 +1,8 @@
/**
* This test ensures that bit test query operators work.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
'use strict';
diff --git a/jstests/core/bulk_insert_capped.js b/jstests/core/bulk_insert_capped.js
index 5a8bd2ed864..672b3325e47 100644
--- a/jstests/core/bulk_insert_capped.js
+++ b/jstests/core/bulk_insert_capped.js
@@ -1,8 +1,9 @@
// @tags: [
-// requires_capped,
-// # Cannot implicitly shard accessed collections because of collection existing when none
-// # expected.
-// assumes_no_implicit_collection_creation_after_drop,
+// # Cannot implicitly shard accessed collections because of collection existing when none
+// # expected.
+// assumes_no_implicit_collection_creation_after_drop,
+// requires_capped,
+// sbe_incompatible,
// ]
// SERVER-21488 Test that multi inserts into capped collections don't cause corruption.
diff --git a/jstests/core/bypass_doc_validation.js b/jstests/core/bypass_doc_validation.js
index f44ede8bc56..6016017bfb1 100644
--- a/jstests/core/bypass_doc_validation.js
+++ b/jstests/core/bypass_doc_validation.js
@@ -1,10 +1,11 @@
// @tags: [
// does_not_support_stepdowns,
// requires_fastcount,
+// requires_fcv_47,
// requires_non_retryable_commands,
+// sbe_incompatible,
// uses_$out,
// uses_map_reduce_with_temp_collections,
-// requires_fcv_47,
// ]
/**
diff --git a/jstests/core/collation.js b/jstests/core/collation.js
index 0d9b6fbba31..272fcaedefd 100644
--- a/jstests/core/collation.js
+++ b/jstests/core/collation.js
@@ -3,9 +3,10 @@
// @tags: [
// assumes_no_implicit_collection_creation_after_drop,
// does_not_support_stepdowns,
+// requires_capped,
// requires_non_retryable_commands,
// requires_non_retryable_writes,
-// requires_capped,
+// sbe_incompatible,
// ]
// Integration tests for the collation feature.
diff --git a/jstests/core/collation_plan_cache.js b/jstests/core/collation_plan_cache.js
index 50e6921c91b..274d5fffdae 100644
--- a/jstests/core/collation_plan_cache.js
+++ b/jstests/core/collation_plan_cache.js
@@ -8,6 +8,7 @@
// assumes_read_preference_unchanged,
// assumes_unsharded_collection,
// does_not_support_stepdowns,
+// sbe_incompatible,
// ]
(function() {
'use strict';
diff --git a/jstests/core/command_let_variables.js b/jstests/core/command_let_variables.js
index 38fe91d6aec..3d478a08bc7 100644
--- a/jstests/core/command_let_variables.js
+++ b/jstests/core/command_let_variables.js
@@ -1,6 +1,9 @@
// Tests that commands like find, aggregate and update accepts a 'let' parameter which defines
// variables for use in expressions within the command.
-// @tags: [requires_fcv_47]
+// @tags: [
+// requires_fcv_47,
+// sbe_incompatible,
+// ]
//
(function() {
"use strict";
diff --git a/jstests/core/comment_field.js b/jstests/core/comment_field.js
index 60345f10ad5..0b810dba2bd 100644
--- a/jstests/core/comment_field.js
+++ b/jstests/core/comment_field.js
@@ -8,6 +8,7 @@
* assumes_write_concern_unchanged,
* does_not_support_stepdowns,
* requires_profiling,
+ * sbe_incompatible,
* uses_parallel_shell,
* ]
*/
diff --git a/jstests/core/constructors.js b/jstests/core/constructors.js
index 308baf405fd..f574904d8a0 100644
--- a/jstests/core/constructors.js
+++ b/jstests/core/constructors.js
@@ -3,6 +3,7 @@
// @tags: [
// does_not_support_stepdowns,
// requires_non_retryable_commands,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
diff --git a/jstests/core/contained_or_with_nested_or.js b/jstests/core/contained_or_with_nested_or.js
index 7407498e1ce..b9645f6c185 100644
--- a/jstests/core/contained_or_with_nested_or.js
+++ b/jstests/core/contained_or_with_nested_or.js
@@ -1,4 +1,7 @@
// This test was designed to reproduce a memory leak that was fixed by SERVER-35455.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/coveredIndex1.js b/jstests/core/coveredIndex1.js
index a4c614a2b1c..96f5e0c9113 100644
--- a/jstests/core/coveredIndex1.js
+++ b/jstests/core/coveredIndex1.js
@@ -4,7 +4,10 @@
* This test cannot implicitly shard accessed collections because queries on a sharded collection
* cannot be covered when they aren't on the shard key since the document needs to be fetched in
* order to apply the SHARDING_FILTER stage.
- * @tags: [assumes_unsharded_collection]
+ * @tags: [
+ * assumes_unsharded_collection,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/coveredIndex2.js b/jstests/core/coveredIndex2.js
index 39a48dd3e0d..9ec3ce529ae 100644
--- a/jstests/core/coveredIndex2.js
+++ b/jstests/core/coveredIndex2.js
@@ -1,7 +1,11 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection, requires_fastcount]
+// @tags: [
+// assumes_unsharded_collection,
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db["jstests_coveredIndex2"];
t.drop();
diff --git a/jstests/core/coveredIndex3.js b/jstests/core/coveredIndex3.js
index a054840b6df..13bade7b6ee 100644
--- a/jstests/core/coveredIndex3.js
+++ b/jstests/core/coveredIndex3.js
@@ -1,6 +1,7 @@
// Check proper covered index handling when query and processGetMore yield.
// SERVER-4975
// @tags: [
+// sbe_incompatible,
// uses_parallel_shell,
// ]
diff --git a/jstests/core/coveredIndex4.js b/jstests/core/coveredIndex4.js
index 1f03c387f3b..125cf22da3a 100644
--- a/jstests/core/coveredIndex4.js
+++ b/jstests/core/coveredIndex4.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test covered index projection with $or clause, specifically in getMore
// SERVER-4980
diff --git a/jstests/core/covered_index_compound_1.js b/jstests/core/covered_index_compound_1.js
index 79b015220b5..2f2d45adabd 100644
--- a/jstests/core/covered_index_compound_1.js
+++ b/jstests/core/covered_index_compound_1.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Compound index covered query tests
diff --git a/jstests/core/covered_index_negative_1.js b/jstests/core/covered_index_negative_1.js
index b78357e509d..4028b1159b2 100644
--- a/jstests/core/covered_index_negative_1.js
+++ b/jstests/core/covered_index_negative_1.js
@@ -4,7 +4,10 @@
// nscannedObjects > 0
// Include helpers for analyzing explain output.
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
load("jstests/libs/analyze_plan.js");
var coll = db.getCollection("covered_negative_1");
diff --git a/jstests/core/covered_index_simple_1.js b/jstests/core/covered_index_simple_1.js
index 8e9bc782e1e..c49e5a2bc8e 100644
--- a/jstests/core/covered_index_simple_1.js
+++ b/jstests/core/covered_index_simple_1.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Simple covered index query test
diff --git a/jstests/core/covered_index_simple_2.js b/jstests/core/covered_index_simple_2.js
index 71da45922db..67548ed8c06 100644
--- a/jstests/core/covered_index_simple_2.js
+++ b/jstests/core/covered_index_simple_2.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Simple covered index query test with unique index
diff --git a/jstests/core/covered_index_simple_3.js b/jstests/core/covered_index_simple_3.js
index b53ce20d85f..5e654475252 100644
--- a/jstests/core/covered_index_simple_3.js
+++ b/jstests/core/covered_index_simple_3.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Simple covered index query test with a unique sparse index
diff --git a/jstests/core/covered_index_simple_id.js b/jstests/core/covered_index_simple_id.js
index 5422ae005d0..604e8d0de76 100644
--- a/jstests/core/covered_index_simple_id.js
+++ b/jstests/core/covered_index_simple_id.js
@@ -1,4 +1,7 @@
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
// Simple covered index query test
// Include helpers for analyzing explain output.
diff --git a/jstests/core/covered_index_sort_1.js b/jstests/core/covered_index_sort_1.js
index 1a7ac940efa..4b8cea2e825 100644
--- a/jstests/core/covered_index_sort_1.js
+++ b/jstests/core/covered_index_sort_1.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Simple covered index query test with sort
diff --git a/jstests/core/covered_index_sort_2.js b/jstests/core/covered_index_sort_2.js
index f531b185162..002b6ced896 100644
--- a/jstests/core/covered_index_sort_2.js
+++ b/jstests/core/covered_index_sort_2.js
@@ -1,5 +1,8 @@
// Simple covered index query test with sort on _id
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
// Include helpers for analyzing explain output.
load("jstests/libs/analyze_plan.js");
diff --git a/jstests/core/covered_index_sort_3.js b/jstests/core/covered_index_sort_3.js
index 6a62bafacd2..1107e0584dc 100644
--- a/jstests/core/covered_index_sort_3.js
+++ b/jstests/core/covered_index_sort_3.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Compound index covered query tests with sort
diff --git a/jstests/core/covered_index_sort_no_fetch_optimization.js b/jstests/core/covered_index_sort_no_fetch_optimization.js
index ad2b1697359..65411894d66 100644
--- a/jstests/core/covered_index_sort_no_fetch_optimization.js
+++ b/jstests/core/covered_index_sort_no_fetch_optimization.js
@@ -6,9 +6,10 @@
* Queries on a sharded collection can't be covered when they aren't on the shard key. The document
* must be fetched to support the SHARDING_FILTER stage.
* @tags: [
- * assumes_unsharded_collection,
- * # Sort optimizations added for hashed indexes in 4.7 can generate a different plan.
- * requires_fcv_47
+ * assumes_unsharded_collection,
+ * # Sort optimizations added for hashed indexes in 4.7 can generate a different plan.
+ * requires_fcv_47,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/covered_multikey.js b/jstests/core/covered_multikey.js
index 297728545ab..692b013a074 100644
--- a/jstests/core/covered_multikey.js
+++ b/jstests/core/covered_multikey.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
/**
* Test covering behavior for queries over a multikey index.
diff --git a/jstests/core/currentop_cursors.js b/jstests/core/currentop_cursors.js
index 9cc7e37dcb2..7ae86875e6e 100644
--- a/jstests/core/currentop_cursors.js
+++ b/jstests/core/currentop_cursors.js
@@ -2,7 +2,12 @@
* Tests that an idle cursor will appear in the $currentOp output if the idleCursors option is
* set to true.
*
- * @tags: [assumes_read_concern_unchanged, assumes_read_preference_unchanged, requires_capped]
+ * @tags: [
+ * assumes_read_concern_unchanged,
+ * assumes_read_preference_unchanged,
+ * requires_capped,
+ * sbe_incompatible,
+ * ]
*/
(function() {
diff --git a/jstests/core/cursor3.js b/jstests/core/cursor3.js
index cc602d523f0..1a7e0dfcc7e 100644
--- a/jstests/core/cursor3.js
+++ b/jstests/core/cursor3.js
@@ -1,5 +1,8 @@
// Test inequality bounds combined with ordering for a single-field index.
// BUG 1079 (fixed)
+// @tags: [
+// sbe_incompatible,
+// ]
testNum = 1;
diff --git a/jstests/core/cursor6.js b/jstests/core/cursor6.js
index d373e952b2d..d2c56c00e75 100644
--- a/jstests/core/cursor6.js
+++ b/jstests/core/cursor6.js
@@ -1,4 +1,7 @@
// Test different directions for compound indexes
+// @tags: [
+// sbe_incompatible,
+// ]
function eq(one, two) {
assert.eq(one.a, two.a);
diff --git a/jstests/core/cursora.js b/jstests/core/cursora.js
index 4176e4d42fb..269458cb2c6 100644
--- a/jstests/core/cursora.js
+++ b/jstests/core/cursora.js
@@ -4,6 +4,7 @@
// requires_non_retryable_writes,
// # Uses $where operator
// requires_scripting,
+// sbe_incompatible,
// uses_multiple_connections,
// uses_parallel_shell,
// ]
diff --git a/jstests/core/dbref2.js b/jstests/core/dbref2.js
index 9f3cb4e2ca4..eb6abe1bf19 100644
--- a/jstests/core/dbref2.js
+++ b/jstests/core/dbref2.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
a = db.dbref2a;
b = db.dbref2b;
c = db.dbref2c;
diff --git a/jstests/core/dbref3.js b/jstests/core/dbref3.js
index 6a91a56da2a..41e29b36c94 100644
--- a/jstests/core/dbref3.js
+++ b/jstests/core/dbref3.js
@@ -1,6 +1,9 @@
// Make sure we only make a DBRef object for objects where the first field is a string named $ref
// and the second field is $id with any type. Only the first two fields matter for deciding if it
// is a DBRef. See http://docs.mongodb.org/manual/reference/database-references/#dbrefs.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.dbref3;
diff --git a/jstests/core/dbref4.js b/jstests/core/dbref4.js
index 0de94028e39..83751349a4d 100644
--- a/jstests/core/dbref4.js
+++ b/jstests/core/dbref4.js
@@ -1,6 +1,9 @@
// Fix for SERVER-32072
//
// Ensures round-trippability of int ids in DBRef's after a save/restore
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/depth_limit.js b/jstests/core/depth_limit.js
index b25dffa4426..89b826c749e 100644
--- a/jstests/core/depth_limit.js
+++ b/jstests/core/depth_limit.js
@@ -1,7 +1,8 @@
// SERVER-11781 Don't crash when converting deeply nested or cyclical JS objects to BSON.
// @tags: [
-// # Uses $where operator
-// requires_scripting
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
function test() {
diff --git a/jstests/core/distinct3.js b/jstests/core/distinct3.js
index 9106927aade..654cd8e352a 100644
--- a/jstests/core/distinct3.js
+++ b/jstests/core/distinct3.js
@@ -1,5 +1,6 @@
// @tags: [
// requires_non_retryable_writes,
+// sbe_incompatible,
// uses_multiple_connections,
// uses_parallel_shell,
// ]
diff --git a/jstests/core/distinct_compound_index.js b/jstests/core/distinct_compound_index.js
index 541ac55cb41..b453bcc2aee 100644
--- a/jstests/core/distinct_compound_index.js
+++ b/jstests/core/distinct_compound_index.js
@@ -1,4 +1,8 @@
-// @tags: [assumes_balancer_off, assumes_unsharded_collection]
+// @tags: [
+// assumes_balancer_off,
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/distinct_index1.js b/jstests/core/distinct_index1.js
index e1cd721c7f4..8d82d56ff36 100644
--- a/jstests/core/distinct_index1.js
+++ b/jstests/core/distinct_index1.js
@@ -1,6 +1,9 @@
/**
* Analyzes execution stats for indexed distinct.
- * @tags: [assumes_balancer_off]
+ * @tags: [
+ * assumes_balancer_off,
+ * sbe_incompatible,
+ * ]
*/
(function() {
load("jstests/libs/analyze_plan.js"); // For getPlanStage.
diff --git a/jstests/core/distinct_multikey.js b/jstests/core/distinct_multikey.js
index 7208b67fb64..adea0f54601 100644
--- a/jstests/core/distinct_multikey.js
+++ b/jstests/core/distinct_multikey.js
@@ -1,5 +1,8 @@
/**
* Tests for distinct planning and execution in the presence of multikey indexes.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/distinct_multikey_dotted_path.js b/jstests/core/distinct_multikey_dotted_path.js
index 13b0b8afa5c..3447af0dfc6 100644
--- a/jstests/core/distinct_multikey_dotted_path.js
+++ b/jstests/core/distinct_multikey_dotted_path.js
@@ -6,7 +6,11 @@
* not another).
* Doesn't support stepdowns because it runs explain() on an aggregation (which can apparently
* return incomplete results).
- * @tags: [assumes_unsharded_collection, does_not_support_stepdowns]
+ * @tags: [
+ * assumes_unsharded_collection,
+ * does_not_support_stepdowns,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/distinct_with_hashed_index.js b/jstests/core/distinct_with_hashed_index.js
index 0cd6afb5d2e..8a632cd60a0 100644
--- a/jstests/core/distinct_with_hashed_index.js
+++ b/jstests/core/distinct_with_hashed_index.js
@@ -6,6 +6,7 @@
* @tags: [
* assumes_unsharded_collection,
* does_not_support_stepdowns,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/dotted_path_in_null.js b/jstests/core/dotted_path_in_null.js
index 7c8baf42709..ac4832482a1 100644
--- a/jstests/core/dotted_path_in_null.js
+++ b/jstests/core/dotted_path_in_null.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
(function() {
"use strict";
diff --git a/jstests/core/elemMatchProjection.js b/jstests/core/elemMatchProjection.js
index 69685f6f9e1..46cb2c85d0b 100644
--- a/jstests/core/elemMatchProjection.js
+++ b/jstests/core/elemMatchProjection.js
@@ -1,5 +1,6 @@
// @tags: [
// requires_getmore,
+// sbe_incompatible,
// ]
// Tests for $elemMatch projections and $ positional operator projection.
(function() {
diff --git a/jstests/core/elemmatch_or_pushdown.js b/jstests/core/elemmatch_or_pushdown.js
index 2edef4d0678..718b20bdbe4 100644
--- a/jstests/core/elemmatch_or_pushdown.js
+++ b/jstests/core/elemmatch_or_pushdown.js
@@ -1,6 +1,9 @@
/**
* Tests that an $elemMatch-$or query is evaluated correctly. Designed to reproduce SERVER-33005 and
* SERVER-38164.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/ensure_sorted.js b/jstests/core/ensure_sorted.js
index fbdde2609df..6a037ff79c0 100644
--- a/jstests/core/ensure_sorted.js
+++ b/jstests/core/ensure_sorted.js
@@ -1,7 +1,11 @@
// Cannot implicitly shard accessed collections because of following errmsg: A single
// update/delete on a sharded collection must contain an exact match on _id or contain the shard
// key.
-// @tags: [assumes_unsharded_collection, requires_getmore]
+// @tags: [
+// assumes_unsharded_collection,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// SERVER-17011 Tests whether queries which specify sort and batch size can generate results out of
// order due to the ntoreturn hack. The EnsureSortedStage should solve this problem.
diff --git a/jstests/core/exists.js b/jstests/core/exists.js
index da8ce45a490..4d35f46b790 100644
--- a/jstests/core/exists.js
+++ b/jstests/core/exists.js
@@ -1,4 +1,7 @@
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db.jstests_exists;
t.drop();
diff --git a/jstests/core/exists2.js b/jstests/core/exists2.js
index 5d8a0d80f91..b8fb12c6613 100644
--- a/jstests/core/exists2.js
+++ b/jstests/core/exists2.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.exists2;
t.drop();
diff --git a/jstests/core/exists3.js b/jstests/core/exists3.js
index e4ce03437bb..5b1c29be1db 100644
--- a/jstests/core/exists3.js
+++ b/jstests/core/exists3.js
@@ -1,4 +1,7 @@
// Check exists with non empty document, based on SERVER-2470 example.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_exists3;
t.drop();
diff --git a/jstests/core/exists6.js b/jstests/core/exists6.js
index 67ab7e5345d..6a8371ae0e0 100644
--- a/jstests/core/exists6.js
+++ b/jstests/core/exists6.js
@@ -1,4 +1,7 @@
// SERVER-393 Test indexed matching with $exists.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_exists6;
t.drop();
diff --git a/jstests/core/exists9.js b/jstests/core/exists9.js
index aaa7563e7df..444bcf731a1 100644
--- a/jstests/core/exists9.js
+++ b/jstests/core/exists9.js
@@ -1,4 +1,7 @@
// SERVER-393 Test exists with various empty array and empty object cases.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_exists9;
t.drop();
diff --git a/jstests/core/existsa.js b/jstests/core/existsa.js
index d1079310d71..cfcfe15c234 100644
--- a/jstests/core/existsa.js
+++ b/jstests/core/existsa.js
@@ -1,5 +1,8 @@
/**
* Tests that sparse indexes are disallowed for $exists:false queries.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/explain1.js b/jstests/core/explain1.js
index 3c7d8b9df2c..09891f214dd 100644
--- a/jstests/core/explain1.js
+++ b/jstests/core/explain1.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.explain1;
t.drop();
diff --git a/jstests/core/explain4.js b/jstests/core/explain4.js
index fe67516fe61..06c7bf0b359 100644
--- a/jstests/core/explain4.js
+++ b/jstests/core/explain4.js
@@ -1,4 +1,7 @@
// Test that limit is applied by explain.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_explain4;
t.drop();
diff --git a/jstests/core/explain5.js b/jstests/core/explain5.js
index 03fcec4ddc6..5bae866e096 100644
--- a/jstests/core/explain5.js
+++ b/jstests/core/explain5.js
@@ -1,5 +1,8 @@
// Check explain results for a plan that uses an index to obtain the requested sort order.
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
t = db.jstests_explain5;
t.drop();
diff --git a/jstests/core/explain6.js b/jstests/core/explain6.js
index 11fa61d79e6..dbbb767531c 100644
--- a/jstests/core/explain6.js
+++ b/jstests/core/explain6.js
@@ -1,4 +1,8 @@
-// @tags: [requires_non_retryable_writes, assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Basic test which checks the number of documents returned, keys examined, and documents
// examined as reported by explain.
diff --git a/jstests/core/explain_agg_write_concern.js b/jstests/core/explain_agg_write_concern.js
index 9ff556489fa..7c03d279aa3 100644
--- a/jstests/core/explain_agg_write_concern.js
+++ b/jstests/core/explain_agg_write_concern.js
@@ -6,6 +6,7 @@
// assumes_write_concern_unchanged,
// does_not_support_stepdowns,
// requires_non_retryable_commands,
+// sbe_incompatible,
// ]
/**
diff --git a/jstests/core/explain_batch_size.js b/jstests/core/explain_batch_size.js
index fc4a1a6143c..14fa4e2b550 100644
--- a/jstests/core/explain_batch_size.js
+++ b/jstests/core/explain_batch_size.js
@@ -4,7 +4,10 @@
// also covers the use of an indexed collection and includes a couple of test cases
// using limit()
//
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db.explain_batch_size;
t.drop();
diff --git a/jstests/core/explain_distinct.js b/jstests/core/explain_distinct.js
index 0499463d83c..fd5b0a606d6 100644
--- a/jstests/core/explain_distinct.js
+++ b/jstests/core/explain_distinct.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of collection existing when none
// expected.
-// @tags: [assumes_no_implicit_collection_creation_after_drop]
+// @tags: [
+// assumes_no_implicit_collection_creation_after_drop,
+// sbe_incompatible,
+// ]
/**
* This test ensures that explain on the distinct command works.
diff --git a/jstests/core/explain_execution_error.js b/jstests/core/explain_execution_error.js
index ec0dfba44bd..d2240452573 100644
--- a/jstests/core/explain_execution_error.js
+++ b/jstests/core/explain_execution_error.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test that even when the execution of a query fails, explain reports query
// planner information.
diff --git a/jstests/core/explain_find.js b/jstests/core/explain_find.js
index 75d4338f943..fcf2e35053c 100644
--- a/jstests/core/explain_find.js
+++ b/jstests/core/explain_find.js
@@ -1,4 +1,7 @@
// Tests for explaining find through the explain command.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/explain_large_bounds.js b/jstests/core/explain_large_bounds.js
index daa3bea0ffd..78f6fdec75e 100644
--- a/jstests/core/explain_large_bounds.js
+++ b/jstests/core/explain_large_bounds.js
@@ -1,6 +1,9 @@
/**
* Make sure explain succeeds even when the index bounds are really big.
- * @tags: [resource_intensive]
+ * @tags: [
+ * resource_intensive,
+ * sbe_incompatible,
+ * ]
*/
(function() {
const coll = db.jstests_explain_large_bounds;
diff --git a/jstests/core/explain_missing_collection.js b/jstests/core/explain_missing_collection.js
index c186d3015a4..c52c47bcc52 100644
--- a/jstests/core/explain_missing_collection.js
+++ b/jstests/core/explain_missing_collection.js
@@ -1,6 +1,9 @@
/**
* Test explaining various operations against a non-existent collection.
- * @tags: [assumes_no_implicit_collection_creation_after_drop]
+ * @tags: [
+ * assumes_no_implicit_collection_creation_after_drop,
+ * sbe_incompatible,
+ * ]
*/
(function() {
var missingColl = db.explain_null_collection;
diff --git a/jstests/core/explain_missing_database.js b/jstests/core/explain_missing_database.js
index a1eb89e10e4..65e5304b5a4 100644
--- a/jstests/core/explain_missing_database.js
+++ b/jstests/core/explain_missing_database.js
@@ -1,4 +1,7 @@
// Test explain of various operations against a non-existent database
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
var explainMissingDb = db.getSiblingDB("explainMissingDb");
diff --git a/jstests/core/explain_multi_plan.js b/jstests/core/explain_multi_plan.js
index 1b2b0d6cdb6..dc8f153e6cb 100644
--- a/jstests/core/explain_multi_plan.js
+++ b/jstests/core/explain_multi_plan.js
@@ -1,8 +1,9 @@
// @tags: [
-// # Cannot implicitly shard accessed collections because of following errmsg: A single
-// # update/delete on a sharded collection must contain an exact match on _id or contain the
-// # shard key.
-// assumes_unsharded_collection,
+// # Cannot implicitly shard accessed collections because of following errmsg: A single
+// # update/delete on a sharded collection must contain an exact match on _id or contain the shard
+// # key.
+// assumes_unsharded_collection,
+// sbe_incompatible,
// ]
/**
diff --git a/jstests/core/explain_multikey.js b/jstests/core/explain_multikey.js
index e342203e503..b6588a05ee1 100644
--- a/jstests/core/explain_multikey.js
+++ b/jstests/core/explain_multikey.js
@@ -2,7 +2,10 @@
//
// This test examines the explain output to verify that certain indexes are multi-key, which may not
// be the case on all shards.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/explain_shell_helpers.js b/jstests/core/explain_shell_helpers.js
index 5e62eade166..5ebbab7d311 100644
--- a/jstests/core/explain_shell_helpers.js
+++ b/jstests/core/explain_shell_helpers.js
@@ -6,6 +6,7 @@
* assumes_unsharded_collection,
* does_not_support_stepdowns,
* requires_fastcount,
+ * sbe_incompatible,
* ]
*/
diff --git a/jstests/core/explain_sort_type.js b/jstests/core/explain_sort_type.js
index 38165be32a2..239b08bb566 100644
--- a/jstests/core/explain_sort_type.js
+++ b/jstests/core/explain_sort_type.js
@@ -8,6 +8,7 @@
* assumes_unsharded_collection,
* # This test uses a non-retryable multi-update command.
* requires_non_retryable_writes,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/explain_validation.js b/jstests/core/explain_validation.js
index 4a1dcb8e850..60c0ea1834b 100644
--- a/jstests/core/explain_validation.js
+++ b/jstests/core/explain_validation.js
@@ -2,7 +2,10 @@
* Tests that an unknown field in the explain command will be rejected while generic command
* arguments will be permitted to pass validation.
*
- * @tags: [requires_fcv_47]
+ * @tags: [
+ * requires_fcv_47,
+ * sbe_incompatible,
+ * ]
*/
(function() {
diff --git a/jstests/core/explode_for_sort_collation.js b/jstests/core/explode_for_sort_collation.js
index fcdb3629bce..68e3fe28456 100644
--- a/jstests/core/explode_for_sort_collation.js
+++ b/jstests/core/explode_for_sort_collation.js
@@ -1,7 +1,10 @@
/**
* Tests explode for sort query planner behavior with collated queries and indexes. This is a test
* for SERVER-48993.
- * @tags: [requires_find_command]
+ * @tags: [
+ * requires_find_command,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/explode_for_sort_fetch.js b/jstests/core/explode_for_sort_fetch.js
index 9e295080399..cd347efdaca 100644
--- a/jstests/core/explode_for_sort_fetch.js
+++ b/jstests/core/explode_for_sort_fetch.js
@@ -2,8 +2,9 @@
* Tests explode for sort query planner behavior when the input query plan contains OR > FETCH >
* IXSCAN, OR > IXSCAN subtrees or a mix of both.
* @tags: [
- * # Does not work with legacy shellWriteMode.
- * requires_find_command
+ * # Does not work with legacy shellWriteMode.
+ * requires_find_command,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/expr.js b/jstests/core/expr.js
index db69ba2dc8a..05cd676cdf2 100644
--- a/jstests/core/expr.js
+++ b/jstests/core/expr.js
@@ -1,10 +1,11 @@
// @tags: [
// does_not_support_stepdowns,
-// requires_getmore,
-// requires_non_retryable_writes,
// # Explain reports errors from $expr differently in 4.4 and older, so this test assumes that all
// # nodes are at least binary version 4.7.
// requires_fcv_47,
+// requires_getmore,
+// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
// Tests for $expr in the CRUD commands.
diff --git a/jstests/core/expr_index_use.js b/jstests/core/expr_index_use.js
index ece507f60d3..1129916dcd6 100644
--- a/jstests/core/expr_index_use.js
+++ b/jstests/core/expr_index_use.js
@@ -1,4 +1,7 @@
// Confirms expected index use when performing a match with a $expr statement.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/expr_or_pushdown.js b/jstests/core/expr_or_pushdown.js
index e2605e08c91..5c09bb63efd 100644
--- a/jstests/core/expr_or_pushdown.js
+++ b/jstests/core/expr_or_pushdown.js
@@ -1,6 +1,9 @@
/**
* Test that an $expr predicated which is eligible for being indexed with an $or pushdown executes
* as expected.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/field_name_validation.js b/jstests/core/field_name_validation.js
index 3568103e768..7d99cf8538e 100644
--- a/jstests/core/field_name_validation.js
+++ b/jstests/core/field_name_validation.js
@@ -7,7 +7,10 @@
*
* contained in a top-level element, embedded element, and within _id.
*
- * @tags: [assumes_unsharded_collection]
+ * @tags: [
+ * assumes_unsharded_collection,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/find6.js b/jstests/core/find6.js
index ec683d7f68e..7edf1739c78 100644
--- a/jstests/core/find6.js
+++ b/jstests/core/find6.js
@@ -1,8 +1,8 @@
// @tags: [
-// requires_fastcount,
-//
-// # Uses $where operator
-// requires_scripting,
+// requires_fastcount,
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.find6;
diff --git a/jstests/core/find_and_modify_server6865.js b/jstests/core/find_and_modify_server6865.js
index 1e154392ea9..bdfe74f0a78 100644
--- a/jstests/core/find_and_modify_server6865.js
+++ b/jstests/core/find_and_modify_server6865.js
@@ -3,6 +3,7 @@
// key.
// @tags: [
// assumes_unsharded_collection,
+// sbe_incompatible,
// ]
/**
diff --git a/jstests/core/find_dedup.js b/jstests/core/find_dedup.js
index 791ce338c45..8c628b66734 100644
--- a/jstests/core/find_dedup.js
+++ b/jstests/core/find_dedup.js
@@ -1,6 +1,9 @@
// Test that duplicate query results are not returned.
//
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/find_getmore_bsonsize.js b/jstests/core/find_getmore_bsonsize.js
index 9a57e9ef558..cb537a88279 100644
--- a/jstests/core/find_getmore_bsonsize.js
+++ b/jstests/core/find_getmore_bsonsize.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Ensure that the find and getMore commands can handle documents nearing the 16 MB size limit for
// user-stored BSON documents.
diff --git a/jstests/core/find_getmore_cmd.js b/jstests/core/find_getmore_cmd.js
index 248721ebbef..169efc8f166 100644
--- a/jstests/core/find_getmore_cmd.js
+++ b/jstests/core/find_getmore_cmd.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Tests that explicitly invoke the find and getMore commands.
(function() {
diff --git a/jstests/core/find_size.js b/jstests/core/find_size.js
index 14949f0f477..bcee61b4772 100644
--- a/jstests/core/find_size.js
+++ b/jstests/core/find_size.js
@@ -1,4 +1,7 @@
// Tests the behavior of $size for match expressions.
+// @tags [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/finda.js b/jstests/core/finda.js
index 50d04fb8b2c..0f59c4c7f3b 100644
--- a/jstests/core/finda.js
+++ b/jstests/core/finda.js
@@ -1,5 +1,6 @@
// @tags: [
// requires_getmore,
+// sbe_incompatible,
// ]
// Tests where the QueryOptimizerCursor enters takeover mode during a query rather than a get more.
diff --git a/jstests/core/fts1.js b/jstests/core/fts1.js
index b1775ff0d30..0bcd46b3f04 100644
--- a/jstests/core/fts1.js
+++ b/jstests/core/fts1.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/fts2.js b/jstests/core/fts2.js
index cf0b875c220..77b6fe25bd5 100644
--- a/jstests/core/fts2.js
+++ b/jstests/core/fts2.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
load("jstests/libs/fts.js");
t = db.text2;
diff --git a/jstests/core/fts3.js b/jstests/core/fts3.js
index 64e37d95105..6a4c813744a 100644
--- a/jstests/core/fts3.js
+++ b/jstests/core/fts3.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
load("jstests/libs/fts.js");
t = db.text3;
diff --git a/jstests/core/fts4.js b/jstests/core/fts4.js
index 13a9e73cd10..16f88a7a760 100644
--- a/jstests/core/fts4.js
+++ b/jstests/core/fts4.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
load("jstests/libs/fts.js");
t = db.text4;
diff --git a/jstests/core/fts5.js b/jstests/core/fts5.js
index d3d6bb4de44..99cd6ce84bb 100644
--- a/jstests/core/fts5.js
+++ b/jstests/core/fts5.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
load("jstests/libs/fts.js");
t = db.text5;
diff --git a/jstests/core/fts6.js b/jstests/core/fts6.js
index 15c537bb235..7216fc728e9 100644
--- a/jstests/core/fts6.js
+++ b/jstests/core/fts6.js
@@ -1,5 +1,8 @@
// SERVER-13039. Confirm that we return the right results when $text is
// inside an $or.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_fts6;
t.drop();
diff --git a/jstests/core/fts_array.js b/jstests/core/fts_array.js
index 93d4ba1cfb8..af2001a236c 100644
--- a/jstests/core/fts_array.js
+++ b/jstests/core/fts_array.js
@@ -1,5 +1,8 @@
/**
* Tests for the interaction between FTS indexes and arrays.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/fts_blog.js b/jstests/core/fts_blog.js
index 68cca6fa3a5..cdaba7860fc 100644
--- a/jstests/core/fts_blog.js
+++ b/jstests/core/fts_blog.js
@@ -7,6 +7,9 @@ t.save({_id: 3, title: "knives are Fun", text: "this is a new blog i am writing.
// default weight is 1
// specify weights if you want a field to be more meaningull
+// @tags: [
+// sbe_incompatible,
+// ]
t.ensureIndex({"title": "text", text: "text"}, {weights: {title: 10}});
res = t.find({"$text": {"$search": "blog"}}, {score: {"$meta": "textScore"}}).sort({
diff --git a/jstests/core/fts_blogwild.js b/jstests/core/fts_blogwild.js
index 82cb594bab6..207fea471c1 100644
--- a/jstests/core/fts_blogwild.js
+++ b/jstests/core/fts_blogwild.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
t = db.text_blogwild;
t.drop();
diff --git a/jstests/core/fts_casesensitive.js b/jstests/core/fts_casesensitive.js
index 6617822d43f..191631a6ac0 100644
--- a/jstests/core/fts_casesensitive.js
+++ b/jstests/core/fts_casesensitive.js
@@ -1,4 +1,7 @@
// Integration tests for {$caseSensitive: true} option to $text query operator.
+// @tags: [
+// sbe_incompatible,
+// ]
load('jstests/libs/fts.js');
var coll = db.fts_casesensitive;
diff --git a/jstests/core/fts_diacritic_and_caseinsensitive.js b/jstests/core/fts_diacritic_and_caseinsensitive.js
index 4b79837fed5..107ff447ec9 100644
--- a/jstests/core/fts_diacritic_and_caseinsensitive.js
+++ b/jstests/core/fts_diacritic_and_caseinsensitive.js
@@ -1,4 +1,7 @@
// Integration tests for no case or diacritic options to $text query operator.
+// @tags: [
+// sbe_incompatible,
+// ]
load('jstests/libs/fts.js');
diff --git a/jstests/core/fts_diacritic_and_casesensitive.js b/jstests/core/fts_diacritic_and_casesensitive.js
index 5d5711f640e..0f0e63feca4 100644
--- a/jstests/core/fts_diacritic_and_casesensitive.js
+++ b/jstests/core/fts_diacritic_and_casesensitive.js
@@ -1,5 +1,8 @@
// Integration tests for {$diacriticSensitive: true, $caseSensitive: true} option to $text query
// operator.
+// @tags: [
+// sbe_incompatible,
+// ]
load('jstests/libs/fts.js');
diff --git a/jstests/core/fts_diacriticsensitive.js b/jstests/core/fts_diacriticsensitive.js
index c24b82350e0..4440e587ed7 100644
--- a/jstests/core/fts_diacriticsensitive.js
+++ b/jstests/core/fts_diacriticsensitive.js
@@ -1,4 +1,7 @@
// Integration tests for {$diacriticSensitive: true} option to $text query operator.
+// @tags: [
+// sbe_incompatible,
+// ]
load('jstests/libs/fts.js');
diff --git a/jstests/core/fts_dotted_prefix_fields.js b/jstests/core/fts_dotted_prefix_fields.js
index 4f634c57312..a16988b9fac 100644
--- a/jstests/core/fts_dotted_prefix_fields.js
+++ b/jstests/core/fts_dotted_prefix_fields.js
@@ -1,5 +1,8 @@
// Test that text search works correct when the text index has dotted paths as the non-text
// prefixes.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/fts_explain.js b/jstests/core/fts_explain.js
index 2470d8becf9..1f1f0a0e55b 100644
--- a/jstests/core/fts_explain.js
+++ b/jstests/core/fts_explain.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
// Test $text explain. SERVER-12037.
diff --git a/jstests/core/fts_find_and_modify.js b/jstests/core/fts_find_and_modify.js
index 607b6273d35..92d45ba1658 100644
--- a/jstests/core/fts_find_and_modify.js
+++ b/jstests/core/fts_find_and_modify.js
@@ -12,6 +12,7 @@
* # retryable write command, the 'fields' option does not currently work with retryable writes.
* # See SERVER-31242.
* requires_non_retryable_writes,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/fts_index.js b/jstests/core/fts_index.js
index 1a567668629..48524fa53e2 100644
--- a/jstests/core/fts_index.js
+++ b/jstests/core/fts_index.js
@@ -7,14 +7,14 @@
* 5. Bad weights test cases.
*
* @tags: [
- * # Cannot implicitly shard accessed collections because of collection existing when none
- * # expected.
- * assumes_no_implicit_collection_creation_after_drop,
- * # Has operations which may never complete in stepdown/kill/terminate transaction tests.
- * operations_longer_than_stepdown_interval_in_txns,
- *
- * # Uses index building in background
- * requires_background_index,
+ * # Cannot implicitly shard accessed collections because of collection existing when none
+ * # expected.
+ * assumes_no_implicit_collection_creation_after_drop,
+ * # Has operations which may never complete in stepdown/kill/terminate transaction tests.
+ * operations_longer_than_stepdown_interval_in_txns,
+ * # Uses index building in background
+ * requires_background_index,
+ * sbe_incompatible,
* ]
*/
diff --git a/jstests/core/fts_index2.js b/jstests/core/fts_index2.js
index f2d5e23f23f..bf264d60c8a 100644
--- a/jstests/core/fts_index2.js
+++ b/jstests/core/fts_index2.js
@@ -1,6 +1,10 @@
// Cannot implicitly shard accessed collections because renameCollection command not supported
// on sharded collections.
-// @tags: [assumes_unsharded_collection, requires_non_retryable_commands]
+// @tags: [
+// assumes_unsharded_collection,
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
// Test that collections with text indexes can be renamed. SERVER-14027.
diff --git a/jstests/core/fts_index3.js b/jstests/core/fts_index3.js
index d23b0e5418f..02bd9559591 100644
--- a/jstests/core/fts_index3.js
+++ b/jstests/core/fts_index3.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because of following errmsg: A single
// update/delete on a sharded collection must contain an exact match on _id or contain the shard
// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Test that updates to fields in a text-indexed document are correctly reflected in the text index.
var coll = db.fts_index3;
diff --git a/jstests/core/fts_index_version1.js b/jstests/core/fts_index_version1.js
index 8ae979c7dbe..73993c83cbd 100644
--- a/jstests/core/fts_index_version1.js
+++ b/jstests/core/fts_index_version1.js
@@ -1,4 +1,7 @@
// Test basic usage of "textIndexVersion:1" indexes.
+// @tags: [
+// sbe_incompatible,
+// ]
var coll = db.fts_index_version1;
// Test basic English search.
diff --git a/jstests/core/fts_index_version2.js b/jstests/core/fts_index_version2.js
index a74fe11a62f..10f803f30c6 100644
--- a/jstests/core/fts_index_version2.js
+++ b/jstests/core/fts_index_version2.js
@@ -1,4 +1,7 @@
// Integration tests for version 2 text index, ensuring that it maintains old behavior.
+// @tags: [
+// sbe_incompatible,
+// ]
load('jstests/libs/fts.js');
diff --git a/jstests/core/fts_index_wildcard_and_weight.js b/jstests/core/fts_index_wildcard_and_weight.js
index 936d36c8a94..72631070ff3 100644
--- a/jstests/core/fts_index_wildcard_and_weight.js
+++ b/jstests/core/fts_index_wildcard_and_weight.js
@@ -1,6 +1,9 @@
// Test that on a text index that matches all fields does not use a weight from a named field.
// This test was designed to reproduce SERVER-45363.
//
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
var coll = db.getCollection(jsTestName());
diff --git a/jstests/core/fts_mix.js b/jstests/core/fts_mix.js
index 89195d8b710..abfdcc6aefd 100644
--- a/jstests/core/fts_mix.js
+++ b/jstests/core/fts_mix.js
@@ -3,6 +3,9 @@ load("jstests/libs/fts.js");
load("jstests/aggregation/extras/utils.js"); // For resultsEq.
// test collection
+// @tags: [
+// sbe_incompatible,
+// ]
tc = db.text_mix;
tc.drop();
diff --git a/jstests/core/fts_partition1.js b/jstests/core/fts_partition1.js
index a2a52a74cdf..055f574baf1 100644
--- a/jstests/core/fts_partition1.js
+++ b/jstests/core/fts_partition1.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
load("jstests/libs/fts.js");
t = db.text_parition1;
diff --git a/jstests/core/fts_partition_no_multikey.js b/jstests/core/fts_partition_no_multikey.js
index 1238bc60839..209faf94f3a 100644
--- a/jstests/core/fts_partition_no_multikey.js
+++ b/jstests/core/fts_partition_no_multikey.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.fts_partition_no_multikey;
t.drop();
diff --git a/jstests/core/fts_phrase.js b/jstests/core/fts_phrase.js
index d93e53b0898..eae0a1c268d 100644
--- a/jstests/core/fts_phrase.js
+++ b/jstests/core/fts_phrase.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.text_phrase;
t.drop();
diff --git a/jstests/core/fts_proj.js b/jstests/core/fts_proj.js
index cc89f84442a..ba4ca853279 100644
--- a/jstests/core/fts_proj.js
+++ b/jstests/core/fts_proj.js
@@ -1,5 +1,8 @@
/**
* Projection tests for FTS queries.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/fts_projection.js b/jstests/core/fts_projection.js
index 3d08cb953f0..ee355f988b2 100644
--- a/jstests/core/fts_projection.js
+++ b/jstests/core/fts_projection.js
@@ -1,4 +1,7 @@
// Test $text with $textScore projection.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/fts_querylang.js b/jstests/core/fts_querylang.js
index 87a5e1d760b..bae823f4e18 100644
--- a/jstests/core/fts_querylang.js
+++ b/jstests/core/fts_querylang.js
@@ -1,5 +1,8 @@
// Test the $text query operator.
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/fts_score_sort.js b/jstests/core/fts_score_sort.js
index b9103ad0c6b..97d5daf7f0a 100644
--- a/jstests/core/fts_score_sort.js
+++ b/jstests/core/fts_score_sort.js
@@ -1,4 +1,7 @@
// Test sorting with text score metadata.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/fts_spanish.js b/jstests/core/fts_spanish.js
index 988b55cbb80..b2371e79959 100644
--- a/jstests/core/fts_spanish.js
+++ b/jstests/core/fts_spanish.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
(function() {
"use strict";
diff --git a/jstests/core/fts_trailing_fields.js b/jstests/core/fts_trailing_fields.js
index 9db8d905535..b2dfef462e9 100644
--- a/jstests/core/fts_trailing_fields.js
+++ b/jstests/core/fts_trailing_fields.js
@@ -1,4 +1,7 @@
// Tests for predicates which can use the trailing field of a text index.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/function_string_representations.js b/jstests/core/function_string_representations.js
index 9d79bb9c8d4..5f722d6bd4a 100644
--- a/jstests/core/function_string_representations.js
+++ b/jstests/core/function_string_representations.js
@@ -1,5 +1,6 @@
// @tags: [
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
diff --git a/jstests/core/geo1.js b/jstests/core/geo1.js
index bf61e4f7ad8..0afae69cf22 100644
--- a/jstests/core/geo1.js
+++ b/jstests/core/geo1.js
@@ -1,6 +1,10 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation, requires_fastcount]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db.geo1;
t.drop();
diff --git a/jstests/core/geo10.js b/jstests/core/geo10.js
index 13bb765c176..c33f90cdfbd 100644
--- a/jstests/core/geo10.js
+++ b/jstests/core/geo10.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
// Test for SERVER-2746
diff --git a/jstests/core/geo2.js b/jstests/core/geo2.js
index 4f687c4d068..01a4c467339 100644
--- a/jstests/core/geo2.js
+++ b/jstests/core/geo2.js
@@ -1,4 +1,8 @@
-// @tags: [requires_fastcount, operations_longer_than_stepdown_interval_in_txns]
+// @tags: [
+// operations_longer_than_stepdown_interval_in_txns,
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db.geo2;
t.drop();
diff --git a/jstests/core/geo3.js b/jstests/core/geo3.js
index b5fec6769e9..e75c9b14245 100644
--- a/jstests/core/geo3.js
+++ b/jstests/core/geo3.js
@@ -1,4 +1,8 @@
-// @tags: [requires_fastcount, operations_longer_than_stepdown_interval_in_txns]
+// @tags: [
+// operations_longer_than_stepdown_interval_in_txns,
+// requires_fastcount,
+// sbe_incompatible,
+// ]
(function() {
t = db.geo3;
diff --git a/jstests/core/geo6.js b/jstests/core/geo6.js
index 914b7679d70..d6b43771b2c 100644
--- a/jstests/core/geo6.js
+++ b/jstests/core/geo6.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geo6;
t.drop();
diff --git a/jstests/core/geo7.js b/jstests/core/geo7.js
index b7563e9f155..18c1863273a 100644
--- a/jstests/core/geo7.js
+++ b/jstests/core/geo7.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geo7;
t.drop();
diff --git a/jstests/core/geo9.js b/jstests/core/geo9.js
index eade34f6afe..eacd30f9a6d 100644
--- a/jstests/core/geo9.js
+++ b/jstests/core/geo9.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geo9;
t.drop();
diff --git a/jstests/core/geo_2d_explain.js b/jstests/core/geo_2d_explain.js
index 1375cad7aba..370ef47e708 100644
--- a/jstests/core/geo_2d_explain.js
+++ b/jstests/core/geo_2d_explain.js
@@ -1,4 +1,7 @@
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
var t = db.geo_2d_explain;
diff --git a/jstests/core/geo_2d_trailing_fields.js b/jstests/core/geo_2d_trailing_fields.js
index e4428c44888..f31b671f5c3 100644
--- a/jstests/core/geo_2d_trailing_fields.js
+++ b/jstests/core/geo_2d_trailing_fields.js
@@ -1,4 +1,7 @@
// Tests for predicates which can use the trailing field of a 2d index.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_2d_with_geojson_point.js b/jstests/core/geo_2d_with_geojson_point.js
index 5c30d6e30ab..34b904a32bf 100644
--- a/jstests/core/geo_2d_with_geojson_point.js
+++ b/jstests/core/geo_2d_with_geojson_point.js
@@ -1,5 +1,8 @@
-/*
+/**
* Use of GeoJSON points should be prohibited with a 2d index, SERVER-10636.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
var t = db.geo_2d_with_geojson_point;
diff --git a/jstests/core/geo_allowedcomparisons.js b/jstests/core/geo_allowedcomparisons.js
index 24b4ce95efa..c1ef4efcba1 100644
--- a/jstests/core/geo_allowedcomparisons.js
+++ b/jstests/core/geo_allowedcomparisons.js
@@ -1,4 +1,7 @@
// A test for what geometries can interact with what other geometries.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_allowedcomparisons;
// Any GeoJSON object can intersect with any geojson object.
diff --git a/jstests/core/geo_array0.js b/jstests/core/geo_array0.js
index 9d25eae9c51..0f27de02e49 100644
--- a/jstests/core/geo_array0.js
+++ b/jstests/core/geo_array0.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
// Make sure the very basics of geo arrays are sane by creating a few multi location docs
t = db.geoarray;
diff --git a/jstests/core/geo_array1.js b/jstests/core/geo_array1.js
index 08b6060f3cc..53ee3ef8729 100644
--- a/jstests/core/geo_array1.js
+++ b/jstests/core/geo_array1.js
@@ -1,4 +1,7 @@
// Make sure many locations in one doc works, in the form of an array
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geoarray1;
function test(index) {
diff --git a/jstests/core/geo_array2.js b/jstests/core/geo_array2.js
index bd9a8507999..d2a197891e6 100644
--- a/jstests/core/geo_array2.js
+++ b/jstests/core/geo_array2.js
@@ -1,4 +1,7 @@
// Check the semantics of near calls with multiple locations
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geoarray2;
t.drop();
diff --git a/jstests/core/geo_big_polygon.js b/jstests/core/geo_big_polygon.js
index 26b3f436780..6aafc934631 100644
--- a/jstests/core/geo_big_polygon.js
+++ b/jstests/core/geo_big_polygon.js
@@ -1,4 +1,8 @@
-// @tags: [requires_non_retryable_writes, requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
//
// Test of sample big polygon functionality
diff --git a/jstests/core/geo_big_polygon2.js b/jstests/core/geo_big_polygon2.js
index d41377bb46a..e681a84167f 100644
--- a/jstests/core/geo_big_polygon2.js
+++ b/jstests/core/geo_big_polygon2.js
@@ -1,4 +1,8 @@
-// @tags: [requires_non_retryable_writes, requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
//
// Big Polygon related tests
diff --git a/jstests/core/geo_big_polygon3.js b/jstests/core/geo_big_polygon3.js
index d9f850b7b2d..a55ce87c3d6 100644
--- a/jstests/core/geo_big_polygon3.js
+++ b/jstests/core/geo_big_polygon3.js
@@ -2,6 +2,7 @@
// does_not_support_stepdowns,
// requires_fastcount,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
//
diff --git a/jstests/core/geo_borders.js b/jstests/core/geo_borders.js
index 0335b3d5c39..8eac710db0f 100644
--- a/jstests/core/geo_borders.js
+++ b/jstests/core/geo_borders.js
@@ -4,6 +4,9 @@ t.drop();
epsilon = 0.0001;
// For these tests, *required* that step ends exactly on max
+// @tags: [
+// sbe_incompatible,
+// ]
min = -1;
max = 1;
step = 1;
diff --git a/jstests/core/geo_box1.js b/jstests/core/geo_box1.js
index c724b0a8b5d..300e65c2dc6 100644
--- a/jstests/core/geo_box1.js
+++ b/jstests/core/geo_box1.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
t = db.geo_box1;
t.drop();
diff --git a/jstests/core/geo_box1_noindex.js b/jstests/core/geo_box1_noindex.js
index 3bc7b5ad3e2..4c813d17fa0 100644
--- a/jstests/core/geo_box1_noindex.js
+++ b/jstests/core/geo_box1_noindex.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// SERVER-7343: allow $within without a geo index.
t = db.geo_box1_noindex;
diff --git a/jstests/core/geo_box2.js b/jstests/core/geo_box2.js
index 74f9695f9b2..f0f99b15ea0 100644
--- a/jstests/core/geo_box2.js
+++ b/jstests/core/geo_box2.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geo_box2;
t.drop();
diff --git a/jstests/core/geo_box3.js b/jstests/core/geo_box3.js
index 7f9dd12ea60..bbc7a729e09 100644
--- a/jstests/core/geo_box3.js
+++ b/jstests/core/geo_box3.js
@@ -2,6 +2,9 @@
// construct an index, think up a bounding box inside the index that
// doesn't include the center of the index, and put a point inside the
// bounding box.
+// @tags: [
+// sbe_incompatible,
+// ]
// This is the bug reported in SERVER-994.
t = db.geo_box3;
diff --git a/jstests/core/geo_center_sphere1.js b/jstests/core/geo_center_sphere1.js
index a533c0a598a..df3ea9bb36c 100644
--- a/jstests/core/geo_center_sphere1.js
+++ b/jstests/core/geo_center_sphere1.js
@@ -1,4 +1,8 @@
-// @tags: [requires_fastcount, assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db.geo_center_sphere1;
diff --git a/jstests/core/geo_center_sphere2.js b/jstests/core/geo_center_sphere2.js
index af8074d75cb..4a263cba259 100644
--- a/jstests/core/geo_center_sphere2.js
+++ b/jstests/core/geo_center_sphere2.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
//
// Tests the error handling of spherical queries
diff --git a/jstests/core/geo_circle1.js b/jstests/core/geo_circle1.js
index a95aeba2c71..65d2a467eab 100644
--- a/jstests/core/geo_circle1.js
+++ b/jstests/core/geo_circle1.js
@@ -1,4 +1,8 @@
-// @tags: [requires_fastcount, assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// requires_fastcount,
+// sbe_incompatible,
+// ]
t = db.geo_circle1;
t.drop();
diff --git a/jstests/core/geo_circle1_noindex.js b/jstests/core/geo_circle1_noindex.js
index 6c3135855a5..cafa251cb4a 100644
--- a/jstests/core/geo_circle1_noindex.js
+++ b/jstests/core/geo_circle1_noindex.js
@@ -1,4 +1,7 @@
// SERVER-7343: allow $within without a geo index.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_circle1_noindex;
t.drop();
diff --git a/jstests/core/geo_circle2.js b/jstests/core/geo_circle2.js
index 6c89098f684..30a826b4f27 100644
--- a/jstests/core/geo_circle2.js
+++ b/jstests/core/geo_circle2.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geo_circle2;
t.drop();
diff --git a/jstests/core/geo_circle2a.js b/jstests/core/geo_circle2a.js
index 1a0cc06a7f8..e3f7a16b150 100644
--- a/jstests/core/geo_circle2a.js
+++ b/jstests/core/geo_circle2a.js
@@ -2,6 +2,9 @@
// Tests to make sure that nested multi-key indexing works for geo indexes and is not used for
// direct position
// lookups
+// @tags: [
+// sbe_incompatible,
+// ]
var coll = db.geo_circle2a;
coll.drop();
diff --git a/jstests/core/geo_circle3.js b/jstests/core/geo_circle3.js
index 4e1fde4aa89..3be564cd180 100644
--- a/jstests/core/geo_circle3.js
+++ b/jstests/core/geo_circle3.js
@@ -1,4 +1,7 @@
// SERVER-848 and SERVER-1191.
+// @tags: [
+// sbe_incompatible,
+// ]
db.places.drop();
n = 0;
diff --git a/jstests/core/geo_circle4.js b/jstests/core/geo_circle4.js
index 0d2b74b2cba..1feb72a2e48 100644
--- a/jstests/core/geo_circle4.js
+++ b/jstests/core/geo_circle4.js
@@ -1,4 +1,7 @@
// Reported as server-848.
+// @tags: [
+// sbe_incompatible,
+// ]
function test(index) {
db.server848.drop();
diff --git a/jstests/core/geo_circle5.js b/jstests/core/geo_circle5.js
index 1296e68073e..8366d754512 100644
--- a/jstests/core/geo_circle5.js
+++ b/jstests/core/geo_circle5.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// reported as server-1238.
diff --git a/jstests/core/geo_distinct.js b/jstests/core/geo_distinct.js
index 2ea860ff981..9dce21e9368 100644
--- a/jstests/core/geo_distinct.js
+++ b/jstests/core/geo_distinct.js
@@ -2,7 +2,10 @@
// 1. Test distinct with geo values for 'key' (SERVER-2135)
// 2. Test distinct with geo predicates for 'query' (SERVER-13769)
//
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_exactfetch.js b/jstests/core/geo_exactfetch.js
index 4af4032045f..68ecc9941ae 100644
--- a/jstests/core/geo_exactfetch.js
+++ b/jstests/core/geo_exactfetch.js
@@ -1,4 +1,7 @@
// SERVER-7322
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_exactfetch;
t.drop();
diff --git a/jstests/core/geo_fiddly_box.js b/jstests/core/geo_fiddly_box.js
index efb185e2dfd..898d718c0cb 100644
--- a/jstests/core/geo_fiddly_box.js
+++ b/jstests/core/geo_fiddly_box.js
@@ -1,6 +1,9 @@
// Reproduces simple test for SERVER-2832
//
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
// The setup to reproduce was/is to create a set of points where the
// "expand" portion of the geo-lookup expands the 2d range in only one
diff --git a/jstests/core/geo_fiddly_box2.js b/jstests/core/geo_fiddly_box2.js
index 6a40b5032b5..d523f56ab38 100644
--- a/jstests/core/geo_fiddly_box2.js
+++ b/jstests/core/geo_fiddly_box2.js
@@ -1,4 +1,7 @@
// Reproduces simple test for SERVER-2115
+// @tags: [
+// sbe_incompatible,
+// ]
// The setup to reproduce is to create a set of points and a really big bounds so that we are
// required to do
diff --git a/jstests/core/geo_haystack1.js b/jstests/core/geo_haystack1.js
index eaf9641d3c4..7596514c59b 100644
--- a/jstests/core/geo_haystack1.js
+++ b/jstests/core/geo_haystack1.js
@@ -1,6 +1,7 @@
// @tags: [
-// # Haystack index is not available on embedded
-// incompatible_with_embedded,
+// # Haystack index is not available on embedded
+// incompatible_with_embedded,
+// sbe_incompatible,
// ]
t = db.geo_haystack1;
diff --git a/jstests/core/geo_haystack2.js b/jstests/core/geo_haystack2.js
index b9946ef3cd8..c16b3979bd7 100644
--- a/jstests/core/geo_haystack2.js
+++ b/jstests/core/geo_haystack2.js
@@ -1,6 +1,7 @@
// @tags: [
-// # Haystack index is not available on embedded
-// incompatible_with_embedded,
+// # Haystack index is not available on embedded
+// incompatible_with_embedded,
+// sbe_incompatible,
// ]
t = db.geo_haystack2;
diff --git a/jstests/core/geo_haystack3.js b/jstests/core/geo_haystack3.js
index 3fe0da348b2..de06d8b19cf 100644
--- a/jstests/core/geo_haystack3.js
+++ b/jstests/core/geo_haystack3.js
@@ -1,6 +1,7 @@
// @tags: [
-// # Haystack index is not available on embedded
-// incompatible_with_embedded,
+// # Haystack index is not available on embedded
+// incompatible_with_embedded,
+// sbe_incompatible,
// ]
t = db.geo_haystack3;
diff --git a/jstests/core/geo_invalid_2d_params.js b/jstests/core/geo_invalid_2d_params.js
index 738fa1ad353..a970ac23432 100644
--- a/jstests/core/geo_invalid_2d_params.js
+++ b/jstests/core/geo_invalid_2d_params.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
var t = db.geo_invalid_2d_params;
t.drop();
diff --git a/jstests/core/geo_invalid_polygon.js b/jstests/core/geo_invalid_polygon.js
index 0eab7ca5406..22e6103bfdc 100644
--- a/jstests/core/geo_invalid_polygon.js
+++ b/jstests/core/geo_invalid_polygon.js
@@ -1,5 +1,8 @@
// With invalid geometry, error message should include _id
// SERVER-8992
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_invalid_polygon;
t.drop();
diff --git a/jstests/core/geo_max.js b/jstests/core/geo_max.js
index 03771ea34d4..d77d2ad8513 100644
--- a/jstests/core/geo_max.js
+++ b/jstests/core/geo_max.js
@@ -1,6 +1,9 @@
// Test where points are on _max (180)
// Using GeoNearRandom because this test needs a lot of points in the index.
// If there aren't enough points the test passes even if the code is broken.
+// @tags: [
+// sbe_incompatible,
+// ]
load("jstests/libs/geo_near_random.js");
var test = new GeoNearRandomTest("geo_near_max");
diff --git a/jstests/core/geo_mindistance.js b/jstests/core/geo_mindistance.js
index a92aab55f18..33153e62008 100644
--- a/jstests/core/geo_mindistance.js
+++ b/jstests/core/geo_mindistance.js
@@ -1,5 +1,9 @@
// Test $minDistance option for $near and $nearSphere queries, and the $geoNear aggregation stage.
-// @tags: [requires_fastcount, requires_getmore]
+// @tags: [
+// requires_fastcount,
+// requires_getmore,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_mindistance_boundaries.js b/jstests/core/geo_mindistance_boundaries.js
index 32977ac4b12..2378176f8ad 100644
--- a/jstests/core/geo_mindistance_boundaries.js
+++ b/jstests/core/geo_mindistance_boundaries.js
@@ -1,5 +1,8 @@
-/* Test boundary conditions for $minDistance option for $near and $nearSphere
+/**Test boundary conditions for $minDistance option for $near and $nearSphere
* queries. SERVER-9395.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
var t = db.geo_mindistance_boundaries;
t.drop();
diff --git a/jstests/core/geo_multikey0.js b/jstests/core/geo_multikey0.js
index 827dd9a41a1..824d411c65e 100644
--- a/jstests/core/geo_multikey0.js
+++ b/jstests/core/geo_multikey0.js
@@ -1,4 +1,7 @@
// Multikey geo values tests - SERVER-3793.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_geo_multikey0;
t.drop();
diff --git a/jstests/core/geo_multikey1.js b/jstests/core/geo_multikey1.js
index 9c092f4ec31..1d51c9221b3 100644
--- a/jstests/core/geo_multikey1.js
+++ b/jstests/core/geo_multikey1.js
@@ -1,4 +1,7 @@
// Multikey geo index tests with parallel arrays.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_geo_multikey1;
t.drop();
diff --git a/jstests/core/geo_multinest0.js b/jstests/core/geo_multinest0.js
index 644fcd0d074..6c0106d70df 100644
--- a/jstests/core/geo_multinest0.js
+++ b/jstests/core/geo_multinest0.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
// Make sure nesting of location arrays also works.
diff --git a/jstests/core/geo_multinest1.js b/jstests/core/geo_multinest1.js
index 78021e4794f..d033cfa86b8 100644
--- a/jstests/core/geo_multinest1.js
+++ b/jstests/core/geo_multinest1.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
// Test distance queries with interleaved distances
diff --git a/jstests/core/geo_near_bounds_overflow.js b/jstests/core/geo_near_bounds_overflow.js
index 04f5a977de6..3d840e82d3b 100644
--- a/jstests/core/geo_near_bounds_overflow.js
+++ b/jstests/core/geo_near_bounds_overflow.js
@@ -1,4 +1,7 @@
// Tests behavior with invalid 2d bounds.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_near_random1.js b/jstests/core/geo_near_random1.js
index 1e7f2bb587d..b6350e6c6a7 100644
--- a/jstests/core/geo_near_random1.js
+++ b/jstests/core/geo_near_random1.js
@@ -1,4 +1,7 @@
// this tests all points
+// @tags: [
+// sbe_incompatible,
+// ]
load("jstests/libs/geo_near_random.js");
var test = new GeoNearRandomTest("geo_near_random1");
diff --git a/jstests/core/geo_near_random2.js b/jstests/core/geo_near_random2.js
index 0cbf374446d..c524e7a7da4 100644
--- a/jstests/core/geo_near_random2.js
+++ b/jstests/core/geo_near_random2.js
@@ -1,4 +1,7 @@
// this tests 1% of all points
+// @tags: [
+// sbe_incompatible,
+// ]
load("jstests/libs/geo_near_random.js");
var test = new GeoNearRandomTest("geo_near_random2");
diff --git a/jstests/core/geo_near_tailable.js b/jstests/core/geo_near_tailable.js
index 405e236707c..824de470ab9 100644
--- a/jstests/core/geo_near_tailable.js
+++ b/jstests/core/geo_near_tailable.js
@@ -1,4 +1,7 @@
-// @tags: [requires_capped]
+// @tags: [
+// requires_capped,
+// sbe_incompatible,
+// ]
//
// Tests that combine $geoNear and tailable cursors.
//
diff --git a/jstests/core/geo_nearwithin.js b/jstests/core/geo_nearwithin.js
index 49b8d155a44..37d963b3ddc 100644
--- a/jstests/core/geo_nearwithin.js
+++ b/jstests/core/geo_nearwithin.js
@@ -1,4 +1,7 @@
// Test $near + $within.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
t = db.geo_nearwithin;
t.drop();
diff --git a/jstests/core/geo_oob_sphere.js b/jstests/core/geo_oob_sphere.js
index 3a878f06b78..0c05adc11ae 100644
--- a/jstests/core/geo_oob_sphere.js
+++ b/jstests/core/geo_oob_sphere.js
@@ -1,6 +1,9 @@
//
// Ensures spherical queries report invalid latitude values in points and center positions
//
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_operator_crs.js b/jstests/core/geo_operator_crs.js
index 95dd130ebfd..cab73fedb0f 100644
--- a/jstests/core/geo_operator_crs.js
+++ b/jstests/core/geo_operator_crs.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
//
// Tests that the correct CRSes are used for geo queries (based on input geometry)
diff --git a/jstests/core/geo_or.js b/jstests/core/geo_or.js
index 4da82d49ca2..04caca0e106 100644
--- a/jstests/core/geo_or.js
+++ b/jstests/core/geo_or.js
@@ -1,4 +1,7 @@
// multiple geo clauses with $or
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geoor;
diff --git a/jstests/core/geo_poly_edge.js b/jstests/core/geo_poly_edge.js
index a8239cde0af..971483e9eef 100644
--- a/jstests/core/geo_poly_edge.js
+++ b/jstests/core/geo_poly_edge.js
@@ -1,6 +1,9 @@
//
// Tests polygon edge cases
//
+// @tags: [
+// sbe_incompatible,
+// ]
var coll = db.getCollection('jstests_geo_poly_edge');
coll.drop();
diff --git a/jstests/core/geo_poly_line.js b/jstests/core/geo_poly_line.js
index fe00e0483e4..3eff8d12496 100644
--- a/jstests/core/geo_poly_line.js
+++ b/jstests/core/geo_poly_line.js
@@ -1,4 +1,7 @@
// Test that weird polygons work SERVER-3725
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_polygon5;
t.drop();
diff --git a/jstests/core/geo_polygon1.js b/jstests/core/geo_polygon1.js
index 34b0cafa1d4..b5580d7bda7 100644
--- a/jstests/core/geo_polygon1.js
+++ b/jstests/core/geo_polygon1.js
@@ -1,6 +1,9 @@
//
// Tests for N-dimensional polygon querying
//
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_polygon1;
t.drop();
diff --git a/jstests/core/geo_polygon1_noindex.js b/jstests/core/geo_polygon1_noindex.js
index 5f43f736b45..3474cc50512 100644
--- a/jstests/core/geo_polygon1_noindex.js
+++ b/jstests/core/geo_polygon1_noindex.js
@@ -1,4 +1,7 @@
// SERVER-7343: allow $within without a geo index.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_polygon1_noindex;
t.drop();
diff --git a/jstests/core/geo_polygon2.js b/jstests/core/geo_polygon2.js
index 2bfaf0b1087..f0576dc905d 100644
--- a/jstests/core/geo_polygon2.js
+++ b/jstests/core/geo_polygon2.js
@@ -1,7 +1,10 @@
//
// More tests for N-dimensional polygon querying
//
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
// Create a polygon of some shape (no holes)
// using turtle graphics. Basically, will look like a very contorted octopus (quad-pus?) shape.
diff --git a/jstests/core/geo_polygon3.js b/jstests/core/geo_polygon3.js
index fe62bee1f14..2fb259332aa 100644
--- a/jstests/core/geo_polygon3.js
+++ b/jstests/core/geo_polygon3.js
@@ -1,6 +1,9 @@
//
// Tests for polygon querying with varying levels of accuracy
//
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_queryoptimizer.js b/jstests/core/geo_queryoptimizer.js
index b6a89c15ea0..56653551ba7 100644
--- a/jstests/core/geo_queryoptimizer.js
+++ b/jstests/core/geo_queryoptimizer.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geo_qo1;
t.drop();
diff --git a/jstests/core/geo_regex0.js b/jstests/core/geo_regex0.js
index 1add7f4e0c3..99ae2cc6a0f 100644
--- a/jstests/core/geo_regex0.js
+++ b/jstests/core/geo_regex0.js
@@ -1,5 +1,8 @@
// From SERVER-2247
// Tests to make sure regex works with geo indices
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.regex0;
t.drop();
diff --git a/jstests/core/geo_s2cursorlimitskip.js b/jstests/core/geo_s2cursorlimitskip.js
index 6614074e31b..f599ccd5b62 100644
--- a/jstests/core/geo_s2cursorlimitskip.js
+++ b/jstests/core/geo_s2cursorlimitskip.js
@@ -2,13 +2,14 @@
//
// @tags: [
// # This test attempts to enable profiling on a server and then get profiling data by reading
-// # from the "system.profile" collection. The former operation must be routed to the primary in
+// # nodes the "system.profile" collection. The former operation must be routed to the primary in
// # a replica set, whereas the latter may be routed to a secondary.
// assumes_read_preference_unchanged,
// does_not_support_stepdowns,
-// requires_getmore,
// requires_capped,
+// requires_getmore,
// requires_profiling,
+// sbe_incompatible,
// ]
var testDB = db.getSiblingDB("geo_s2cursorlimitskip");
diff --git a/jstests/core/geo_s2dedupnear.js b/jstests/core/geo_s2dedupnear.js
index 21378893720..bbf92ded8d7 100644
--- a/jstests/core/geo_s2dedupnear.js
+++ b/jstests/core/geo_s2dedupnear.js
@@ -1,5 +1,8 @@
// Make sure that we don't return several of the same result due to faulty
// assumptions about the btree cursor. That is, don't return duplicate results.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2dedupnear;
t.drop();
diff --git a/jstests/core/geo_s2descindex.js b/jstests/core/geo_s2descindex.js
index 5ef5758ae8a..4a945895c57 100644
--- a/jstests/core/geo_s2descindex.js
+++ b/jstests/core/geo_s2descindex.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
//
// Tests 2dsphere with descending fields, ensures correct lookup
diff --git a/jstests/core/geo_s2disjoint_holes.js b/jstests/core/geo_s2disjoint_holes.js
index a79ea432d48..3654f771280 100644
--- a/jstests/core/geo_s2disjoint_holes.js
+++ b/jstests/core/geo_s2disjoint_holes.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
//
// We should prohibit polygons with holes not bounded by their exterior shells.
diff --git a/jstests/core/geo_s2dupe_points.js b/jstests/core/geo_s2dupe_points.js
index 1038c6df087..2514cdbf4c1 100644
--- a/jstests/core/geo_s2dupe_points.js
+++ b/jstests/core/geo_s2dupe_points.js
@@ -2,6 +2,9 @@
// s2 rejects shapes with duplicate adjacent points as invalid, but they are
// valid in GeoJSON. We store the duplicates, but internally remove them
// before indexing or querying.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2dupe_points;
t.drop();
t.ensureIndex({geo: "2dsphere"});
diff --git a/jstests/core/geo_s2edgecases.js b/jstests/core/geo_s2edgecases.js
index 3dabfdf0bcb..e4a94c46db2 100644
--- a/jstests/core/geo_s2edgecases.js
+++ b/jstests/core/geo_s2edgecases.js
@@ -7,6 +7,9 @@ roundworldpoint = {
};
// Opposite the equator
+// @tags: [
+// sbe_incompatible,
+// ]
roundworld = {
"type": "Polygon",
"coordinates": [[[179, 1], [-179, 1], [-179, -1], [179, -1], [179, 1]]]
diff --git a/jstests/core/geo_s2exact.js b/jstests/core/geo_s2exact.js
index 2c8571c0830..3615be13cb5 100644
--- a/jstests/core/geo_s2exact.js
+++ b/jstests/core/geo_s2exact.js
@@ -1,4 +1,7 @@
// Queries on exact geometry should return the exact geometry.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2exact;
t.drop();
diff --git a/jstests/core/geo_s2explain.js b/jstests/core/geo_s2explain.js
index 6e6938e509a..842c6eb22c8 100644
--- a/jstests/core/geo_s2explain.js
+++ b/jstests/core/geo_s2explain.js
@@ -1,5 +1,8 @@
// Test to check whether the number of intervals in a geoNear query equals
// the number of inputStages it completes
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_geo_s2explain;
t.drop();
diff --git a/jstests/core/geo_s2holesameasshell.js b/jstests/core/geo_s2holesameasshell.js
index 5407fe45c26..0d60ab6958e 100644
--- a/jstests/core/geo_s2holesameasshell.js
+++ b/jstests/core/geo_s2holesameasshell.js
@@ -1,4 +1,7 @@
// If polygons have holes, the holes cannot be equal to the entire geometry.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.geo_s2holessameasshell;
t.drop();
t.ensureIndex({geo: "2dsphere"});
diff --git a/jstests/core/geo_s2index.js b/jstests/core/geo_s2index.js
index d909fab4489..ecc20c7e637 100644
--- a/jstests/core/geo_s2index.js
+++ b/jstests/core/geo_s2index.js
@@ -2,6 +2,9 @@ t = db.geo_s2index;
t.drop();
// We internally drop adjacent duplicate points in lines.
+// @tags: [
+// sbe_incompatible,
+// ]
someline = {
"type": "LineString",
"coordinates": [[40, 5], [40, 5], [40, 5], [41, 6], [41, 6]]
diff --git a/jstests/core/geo_s2indexoldformat.js b/jstests/core/geo_s2indexoldformat.js
index 43974f695cb..c02b854e3fa 100644
--- a/jstests/core/geo_s2indexoldformat.js
+++ b/jstests/core/geo_s2indexoldformat.js
@@ -1,5 +1,8 @@
// Make sure that the 2dsphere index can deal with non-GeoJSON points.
// 2dsphere does not accept legacy shapes, only legacy points.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2indexoldformat;
t.drop();
diff --git a/jstests/core/geo_s2indexversion1.js b/jstests/core/geo_s2indexversion1.js
index 52d2d29a5bb..5471ce99004 100644
--- a/jstests/core/geo_s2indexversion1.js
+++ b/jstests/core/geo_s2indexversion1.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of collection existing when none
// expected.
-// @tags: [assumes_no_implicit_collection_creation_after_drop]
+// @tags: [
+// assumes_no_implicit_collection_creation_after_drop,
+// sbe_incompatible,
+// ]
// Tests 2dsphere index option "2dsphereIndexVersion". Verifies that GeoJSON objects that are new
// in version 2 are not allowed in version 1.
diff --git a/jstests/core/geo_s2intersection.js b/jstests/core/geo_s2intersection.js
index faf9304396c..25479a58349 100644
--- a/jstests/core/geo_s2intersection.js
+++ b/jstests/core/geo_s2intersection.js
@@ -2,8 +2,11 @@ var t = db.geo_s2intersectinglines;
t.drop();
t.ensureIndex({geo: "2dsphere"});
-/* All the tests in this file are generally confirming intersections based upon
+/**All the tests in this file are generally confirming intersections based upon
* these three geo objects.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
var canonLine = {
name: 'canonLine',
diff --git a/jstests/core/geo_s2largewithin.js b/jstests/core/geo_s2largewithin.js
index 2bb0fb557b2..4723bb4833e 100644
--- a/jstests/core/geo_s2largewithin.js
+++ b/jstests/core/geo_s2largewithin.js
@@ -1,5 +1,8 @@
// If our $within is enormous, create a coarse covering for the search so it
// doesn't take forever.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2largewithin;
t.drop();
t.ensureIndex({geo: "2dsphere"});
diff --git a/jstests/core/geo_s2meridian.js b/jstests/core/geo_s2meridian.js
index 65e2a9879e8..47f4fb08a6a 100644
--- a/jstests/core/geo_s2meridian.js
+++ b/jstests/core/geo_s2meridian.js
@@ -2,10 +2,13 @@ t = db.geo_s2meridian;
t.drop();
t.ensureIndex({geo: "2dsphere"});
-/*
+/**
* Test 1: check that intersection works on the meridian. We insert a line
* that crosses the meridian, and then run a geoIntersect with a line
* that runs along the meridian.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
meridianCrossingLine = {
diff --git a/jstests/core/geo_s2multi.js b/jstests/core/geo_s2multi.js
index b72177eea73..28034ad8ba6 100644
--- a/jstests/core/geo_s2multi.js
+++ b/jstests/core/geo_s2multi.js
@@ -4,6 +4,9 @@ t.drop();
t.ensureIndex({geo: "2dsphere"});
// Let's try the examples in the GeoJSON spec.
+// @tags: [
+// sbe_incompatible,
+// ]
multiPointA = {
"type": "MultiPoint",
"coordinates": [[100.0, 0.0], [101.0, 1.0]]
diff --git a/jstests/core/geo_s2near.js b/jstests/core/geo_s2near.js
index 86373c4aa11..c61e16927ff 100644
--- a/jstests/core/geo_s2near.js
+++ b/jstests/core/geo_s2near.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test 2dsphere near search, called via find and $geoNear.
(function() {
diff --git a/jstests/core/geo_s2nearComplex.js b/jstests/core/geo_s2nearComplex.js
index d5b530e6fb4..d7f4fffabc1 100644
--- a/jstests/core/geo_s2nearComplex.js
+++ b/jstests/core/geo_s2nearComplex.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, requires_non_retryable_writes]
+// @tags: [
+// requires_getmore,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
var t = db.get_s2nearcomplex;
t.drop();
diff --git a/jstests/core/geo_s2near_equator_opposite.js b/jstests/core/geo_s2near_equator_opposite.js
index 485afc52fd4..de196ea70eb 100644
--- a/jstests/core/geo_s2near_equator_opposite.js
+++ b/jstests/core/geo_s2near_equator_opposite.js
@@ -1,6 +1,9 @@
// Tests geo near with 2 points diametrically opposite to each other
// on the equator
// First reported in SERVER-11830 as a regression in 2.5
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
var t = db.geos2nearequatoropposite;
diff --git a/jstests/core/geo_s2nearcorrect.js b/jstests/core/geo_s2nearcorrect.js
index 54552a4bee5..43cb30b5885 100644
--- a/jstests/core/geo_s2nearcorrect.js
+++ b/jstests/core/geo_s2nearcorrect.js
@@ -2,6 +2,9 @@
// A geometry may have several covers, one of which is in a search ring and the other of which is
// not. If we see the cover that's not in the search ring, we can't mark the object as 'seen' for
// this ring.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2nearcorrect;
t.drop();
diff --git a/jstests/core/geo_s2nearwithin.js b/jstests/core/geo_s2nearwithin.js
index a40aa34d255..8018dfec575 100644
--- a/jstests/core/geo_s2nearwithin.js
+++ b/jstests/core/geo_s2nearwithin.js
@@ -1,4 +1,7 @@
// Test $geoNear + $within.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
t = db.geo_s2nearwithin;
t.drop();
diff --git a/jstests/core/geo_s2nongeoarray.js b/jstests/core/geo_s2nongeoarray.js
index 62842c8c7b4..4242a9f38e9 100644
--- a/jstests/core/geo_s2nongeoarray.js
+++ b/jstests/core/geo_s2nongeoarray.js
@@ -1,5 +1,8 @@
// Explode arrays when indexing non-geo fields in 2dsphere, and make sure that
// we find them with queries.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2nongeoarray;
oldPoint = [40, 5];
diff --git a/jstests/core/geo_s2nonstring.js b/jstests/core/geo_s2nonstring.js
index 960f0c727a8..f8b1000b09c 100644
--- a/jstests/core/geo_s2nonstring.js
+++ b/jstests/core/geo_s2nonstring.js
@@ -1,4 +1,7 @@
// Added to make sure that S2 indexing's string AND non-string keys work.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2nonstring;
t.drop();
diff --git a/jstests/core/geo_s2nopoints.js b/jstests/core/geo_s2nopoints.js
index 0d2afdb1672..2556540b662 100644
--- a/jstests/core/geo_s2nopoints.js
+++ b/jstests/core/geo_s2nopoints.js
@@ -1,4 +1,7 @@
// See SERVER-7794.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2nopoints;
t.drop();
diff --git a/jstests/core/geo_s2oddshapes.js b/jstests/core/geo_s2oddshapes.js
index 4ae953696a0..0cc60a661a4 100644
--- a/jstests/core/geo_s2oddshapes.js
+++ b/jstests/core/geo_s2oddshapes.js
@@ -1,6 +1,9 @@
// Verify that odd polygons (huge or "narrow") behave as we expect.
// Note that since 2dsphere is spherical, polygons that seem narrow are actually
// rather wide if their latitude (or longitude) range is large.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.geo_s2oddshapes;
t.drop();
t.ensureIndex({geo: "2dsphere"});
diff --git a/jstests/core/geo_s2ordering.js b/jstests/core/geo_s2ordering.js
index ecbfbc95782..8ef84905b75 100644
--- a/jstests/core/geo_s2ordering.js
+++ b/jstests/core/geo_s2ordering.js
@@ -2,7 +2,11 @@
// actually matters for lookup speed. That is, if we're looking for a non-geo key of which
// there are not many, the index order (nongeo, geo) should be faster than (geo, nongeo)
// for 2dsphere.
-// @tags: [assumes_balancer_off, operations_longer_than_stepdown_interval_in_txns]
+// @tags: [
+// assumes_balancer_off,
+// operations_longer_than_stepdown_interval_in_txns,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_s2overlappingpolys.js b/jstests/core/geo_s2overlappingpolys.js
index 485132039d5..9dd7125349a 100644
--- a/jstests/core/geo_s2overlappingpolys.js
+++ b/jstests/core/geo_s2overlappingpolys.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
var t = db.geo_s2overlappingpolys;
t.drop();
diff --git a/jstests/core/geo_s2polywithholes.js b/jstests/core/geo_s2polywithholes.js
index 020ba350e85..c20da5a34aa 100644
--- a/jstests/core/geo_s2polywithholes.js
+++ b/jstests/core/geo_s2polywithholes.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
var t = db.geo_s2weirdpolys;
t.drop();
t.ensureIndex({geo: "2dsphere"});
diff --git a/jstests/core/geo_s2selfintersectingpoly.js b/jstests/core/geo_s2selfintersectingpoly.js
index 236283ab8ac..4bdf41eebab 100644
--- a/jstests/core/geo_s2selfintersectingpoly.js
+++ b/jstests/core/geo_s2selfintersectingpoly.js
@@ -6,7 +6,10 @@ var intersectingPolygon = {
"type": "Polygon",
"coordinates": [[[0.0, 0.0], [0.0, 4.0], [-3.0, 2.0], [1.0, 2.0], [0.0, 0.0]]]
};
-/*
+/**
* Self intersecting polygons should cause a parse exception.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
assert.writeError(t.insert({geo: intersectingPolygon}));
diff --git a/jstests/core/geo_s2sparse.js b/jstests/core/geo_s2sparse.js
index d058afb9f9b..5da238dfe64 100644
--- a/jstests/core/geo_s2sparse.js
+++ b/jstests/core/geo_s2sparse.js
@@ -1,5 +1,8 @@
// Test behavior of 2dsphere and sparse. See SERVER-9639.
// All V2 2dsphere indices are sparse in the geo fields.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/geo_s2twofields.js b/jstests/core/geo_s2twofields.js
index 2e225c8cef6..73666f2bf5e 100644
--- a/jstests/core/geo_s2twofields.js
+++ b/jstests/core/geo_s2twofields.js
@@ -1,7 +1,11 @@
// Verify that we can index multiple geo fields with 2dsphere, and that
// performance is what we expect it to be with indexing both fields.
//
-// @tags: [requires_fastcount, operations_longer_than_stepdown_interval_in_txns]
+// @tags: [
+// operations_longer_than_stepdown_interval_in_txns,
+// requires_fastcount,
+// sbe_incompatible,
+// ]
(function() {
var t = db.geo_s2twofields;
diff --git a/jstests/core/geo_s2validindex.js b/jstests/core/geo_s2validindex.js
index 4c024d2d585..bd190ef2b40 100644
--- a/jstests/core/geo_s2validindex.js
+++ b/jstests/core/geo_s2validindex.js
@@ -1,6 +1,9 @@
//
// Tests valid cases for creation of 2dsphere index
//
+// @tags: [
+// sbe_incompatible,
+// ]
var coll = db.getCollection("twodspherevalid");
diff --git a/jstests/core/geo_s2within.js b/jstests/core/geo_s2within.js
index 430e4f4dc07..c32eb4fd612 100644
--- a/jstests/core/geo_s2within.js
+++ b/jstests/core/geo_s2within.js
@@ -1,4 +1,7 @@
// Test some cases that might be iffy with $within, mostly related to polygon w/holes.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_s2within;
t.drop();
t.ensureIndex({geo: "2dsphere"});
diff --git a/jstests/core/geo_s2within_line_polygon_sphere.js b/jstests/core/geo_s2within_line_polygon_sphere.js
index 73e4a0f897d..f18595c5d6e 100644
--- a/jstests/core/geo_s2within_line_polygon_sphere.js
+++ b/jstests/core/geo_s2within_line_polygon_sphere.js
@@ -1,4 +1,7 @@
// Tests for $geowithin $centerSphere operator with LineString and Polygon.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
function testGeoWithinCenterSphereLinePolygon(coll) {
diff --git a/jstests/core/geo_small_large.js b/jstests/core/geo_small_large.js
index 549f00369a2..5cfa3e68e0f 100644
--- a/jstests/core/geo_small_large.js
+++ b/jstests/core/geo_small_large.js
@@ -1,4 +1,7 @@
// SERVER-2386, general geo-indexing using very large and very small bounds
+// @tags: [
+// sbe_incompatible,
+// ]
load("jstests/libs/geo_near_random.js");
diff --git a/jstests/core/geo_sort1.js b/jstests/core/geo_sort1.js
index 7737719108d..22e185d0106 100644
--- a/jstests/core/geo_sort1.js
+++ b/jstests/core/geo_sort1.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geo_sort1;
t.drop();
diff --git a/jstests/core/geo_uniqueDocs.js b/jstests/core/geo_uniqueDocs.js
index 6a46337966b..88162e42498 100644
--- a/jstests/core/geo_uniqueDocs.js
+++ b/jstests/core/geo_uniqueDocs.js
@@ -1,5 +1,8 @@
// Test uniqueDocs option for $within queries and the $geoNear aggregation stage. SERVER-3139
// SERVER-12120 uniqueDocs is deprecated. Server always returns unique documents.
+// @tags: [
+// sbe_incompatible,
+// ]
collName = 'geo_uniqueDocs_test';
t = db.geo_uniqueDocs_test;
diff --git a/jstests/core/geo_uniqueDocs2.js b/jstests/core/geo_uniqueDocs2.js
index 23aa831f560..9e0b4a0a284 100644
--- a/jstests/core/geo_uniqueDocs2.js
+++ b/jstests/core/geo_uniqueDocs2.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Additional checks for geo uniqueDocs and includeLocs SERVER-3139.
// SERVER-12120 uniqueDocs is deprecated.
diff --git a/jstests/core/geo_update.js b/jstests/core/geo_update.js
index e6ee16eee59..c3b1cac90da 100644
--- a/jstests/core/geo_update.js
+++ b/jstests/core/geo_update.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because of following errmsg: A single
// update/delete on a sharded collection must contain an exact match on _id or contain the shard
// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Tests geo queries w/ update & upsert
// from SERVER-3428
diff --git a/jstests/core/geo_update1.js b/jstests/core/geo_update1.js
index 54d123eff52..2f5b490b96f 100644
--- a/jstests/core/geo_update1.js
+++ b/jstests/core/geo_update1.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
t = db.geo_update1;
t.drop();
diff --git a/jstests/core/geo_update2.js b/jstests/core/geo_update2.js
index 27825416e02..20673844eef 100644
--- a/jstests/core/geo_update2.js
+++ b/jstests/core/geo_update2.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
t = db.geo_update2;
t.drop();
diff --git a/jstests/core/geo_update_btree.js b/jstests/core/geo_update_btree.js
index 8cf711a9e48..ad02f8661aa 100644
--- a/jstests/core/geo_update_btree.js
+++ b/jstests/core/geo_update_btree.js
@@ -3,6 +3,7 @@
// @tags: [
// assumes_write_concern_unchanged,
// requires_non_retryable_writes,
+// sbe_incompatible,
// uses_multiple_connections,
// uses_parallel_shell,
// ]
diff --git a/jstests/core/geo_update_btree2.js b/jstests/core/geo_update_btree2.js
index 1d25ba3d7c8..3bc0a7c9760 100644
--- a/jstests/core/geo_update_btree2.js
+++ b/jstests/core/geo_update_btree2.js
@@ -3,6 +3,7 @@
// does_not_support_stepdowns,
// requires_getmore,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
// Tests whether the geospatial search is stable under btree updates
diff --git a/jstests/core/geo_update_dedup.js b/jstests/core/geo_update_dedup.js
index 324aa329ff7..34e9aff30dd 100644
--- a/jstests/core/geo_update_dedup.js
+++ b/jstests/core/geo_update_dedup.js
@@ -1,5 +1,9 @@
// Cannot implicitly shard accessed collections because single updates are not targeted.
-// @tags: [assumes_unsharded_collection, requires_non_retryable_writes]
+// @tags: [
+// assumes_unsharded_collection,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Test that updates with geo queries which match
// the same document multiple times only apply
diff --git a/jstests/core/geo_validate.js b/jstests/core/geo_validate.js
index caee7720d58..cd839ef8f97 100644
--- a/jstests/core/geo_validate.js
+++ b/jstests/core/geo_validate.js
@@ -1,6 +1,9 @@
//
// Test to make sure that invalid geo options are caught
//
+// @tags: [
+// sbe_incompatible,
+// ]
var coll = db.geo_validate;
coll.drop();
diff --git a/jstests/core/geo_withinquery.js b/jstests/core/geo_withinquery.js
index 24e463d8a9d..4b6f5110d9d 100644
--- a/jstests/core/geo_withinquery.js
+++ b/jstests/core/geo_withinquery.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// SERVER-7343: allow $within without a geo index.
t = db.geo_withinquery;
diff --git a/jstests/core/geoa.js b/jstests/core/geoa.js
index 73285e78a99..c1e0a2f796a 100644
--- a/jstests/core/geoa.js
+++ b/jstests/core/geoa.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.geoa;
t.drop();
diff --git a/jstests/core/geob.js b/jstests/core/geob.js
index d1f01bf7b9c..6a7839253ee 100644
--- a/jstests/core/geob.js
+++ b/jstests/core/geob.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
(function() {
"use strict";
var t = db.geob;
diff --git a/jstests/core/geoc.js b/jstests/core/geoc.js
index db7144d8cd8..4264b6f9295 100644
--- a/jstests/core/geoc.js
+++ b/jstests/core/geoc.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
t = db.geoc;
t.drop();
diff --git a/jstests/core/geod.js b/jstests/core/geod.js
index 055453254a5..fc6c37f1da3 100644
--- a/jstests/core/geod.js
+++ b/jstests/core/geod.js
@@ -5,6 +5,9 @@ t.save({loc: [0.5, 0]});
t.ensureIndex({loc: "2d"});
// do a few geoNears with different maxDistances. The first iteration
// should match no points in the dataset.
+// @tags: [
+// sbe_incompatible,
+// ]
dists = [.49, .51, 1.0];
for (idx in dists) {
b = db.geod
diff --git a/jstests/core/geoe.js b/jstests/core/geoe.js
index 9568e13dc08..5fd2e80640b 100644
--- a/jstests/core/geoe.js
+++ b/jstests/core/geoe.js
@@ -3,6 +3,9 @@
// the first search for a matching point in the geo code could run to
// the end of the btree and not reverse direction (leaving the rest of
// the search always looking at some random non-matching point).
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.geo_box;
t.drop();
diff --git a/jstests/core/geof.js b/jstests/core/geof.js
index 4eae803a856..ad15037db3b 100644
--- a/jstests/core/geof.js
+++ b/jstests/core/geof.js
@@ -2,6 +2,9 @@ t = db.geof;
t.drop();
// corners (dist ~0.98)
+// @tags: [
+// sbe_incompatible,
+// ]
t.insert({loc: [0.7, 0.7]});
t.insert({loc: [0.7, -0.7]});
t.insert({loc: [-0.7, 0.7]});
diff --git a/jstests/core/geonear_cmd_input_validation.js b/jstests/core/geonear_cmd_input_validation.js
index 611e29b01d1..2c3116c3a6d 100644
--- a/jstests/core/geonear_cmd_input_validation.js
+++ b/jstests/core/geonear_cmd_input_validation.js
@@ -1,6 +1,9 @@
//
// Test input validation for geoNear command.
//
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.geonear_cmd_input_validation;
t.drop();
t.ensureIndex({loc: "2dsphere"});
diff --git a/jstests/core/geonear_key.js b/jstests/core/geonear_key.js
index 1ecce018b08..4621e173f0e 100644
--- a/jstests/core/geonear_key.js
+++ b/jstests/core/geonear_key.js
@@ -1,5 +1,8 @@
/**
* Tests for the 'key' field accepted by the $geoNear aggregation stage.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/getlog2.js b/jstests/core/getlog2.js
index 76478464567..497ef2ee7e8 100644
--- a/jstests/core/getlog2.js
+++ b/jstests/core/getlog2.js
@@ -6,6 +6,7 @@
// # be routed to the primary.
// assumes_read_preference_unchanged,
// does_not_support_stepdowns,
+// sbe_incompatible,
// ]
load("jstests/libs/logv2_helpers.js");
diff --git a/jstests/core/getmore_cmd_maxtimems.js b/jstests/core/getmore_cmd_maxtimems.js
index e37ee16b77a..7064e1a5ce0 100644
--- a/jstests/core/getmore_cmd_maxtimems.js
+++ b/jstests/core/getmore_cmd_maxtimems.js
@@ -1,6 +1,11 @@
// Cannot implicitly shard accessed collections because of collection existing when none
// expected.
-// @tags: [assumes_no_implicit_collection_creation_after_drop, requires_getmore, requires_capped]
+// @tags: [
+// assumes_no_implicit_collection_creation_after_drop,
+// requires_capped,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test attaching maxTimeMS to a getMore command.
(function() {
diff --git a/jstests/core/getmore_invalidated_cursors.js b/jstests/core/getmore_invalidated_cursors.js
index 57aa832f391..6b31495546f 100644
--- a/jstests/core/getmore_invalidated_cursors.js
+++ b/jstests/core/getmore_invalidated_cursors.js
@@ -1,5 +1,10 @@
-// @tags: [requires_getmore, requires_non_retryable_commands, requires_collstats,
-// assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// requires_collstats,
+// requires_getmore,
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
// Tests that running a getMore on a cursor that has been invalidated by something like a collection
// drop will return an appropriate error message.
diff --git a/jstests/core/getmore_invalidated_documents.js b/jstests/core/getmore_invalidated_documents.js
index 72acb4a7cc8..3bc5458072e 100644
--- a/jstests/core/getmore_invalidated_documents.js
+++ b/jstests/core/getmore_invalidated_documents.js
@@ -1,7 +1,12 @@
// Cannot implicitly shard accessed collections because of following errmsg: A single
// update/delete on a sharded collection must contain an exact match on _id or contain the shard
// key.
-// @tags: [assumes_unsharded_collection, requires_getmore, requires_non_retryable_writes]
+// @tags: [
+// assumes_unsharded_collection,
+// requires_getmore,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Tests for invalidation during a getmore. This behavior is storage-engine dependent.
// See SERVER-16675.
diff --git a/jstests/core/grow_hash_table.js b/jstests/core/grow_hash_table.js
index 783616b93fb..18f588aae64 100644
--- a/jstests/core/grow_hash_table.js
+++ b/jstests/core/grow_hash_table.js
@@ -6,7 +6,10 @@
//
// Related to SERVER-9824.
//
-// @tags: [operations_longer_than_stepdown_interval_in_txns]
+// @tags: [
+// operations_longer_than_stepdown_interval_in_txns,
+// sbe_incompatible,
+// ]
var testDB = db.getSiblingDB('grow_hash_table');
diff --git a/jstests/core/hashed_index_collation.js b/jstests/core/hashed_index_collation.js
index f6c8382c3bc..ad3f0d110ad 100644
--- a/jstests/core/hashed_index_collation.js
+++ b/jstests/core/hashed_index_collation.js
@@ -6,6 +6,7 @@
* @tags: [
* assumes_unsharded_collection,
* requires_find_command,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/hashed_index_covered_queries.js b/jstests/core/hashed_index_covered_queries.js
index 0f04e469785..ccd3961ca6f 100644
--- a/jstests/core/hashed_index_covered_queries.js
+++ b/jstests/core/hashed_index_covered_queries.js
@@ -4,6 +4,7 @@
*
* @tags: [
* assumes_unsharded_collection,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/hashed_index_queries.js b/jstests/core/hashed_index_queries.js
index 719959a2025..6a33daee3f5 100644
--- a/jstests/core/hashed_index_queries.js
+++ b/jstests/core/hashed_index_queries.js
@@ -1,6 +1,9 @@
/**
* Test to verify the behaviour of find, count, distinct operations in the presence of compound
* hashed indexes.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/hashed_index_queries_with_logical_operators.js b/jstests/core/hashed_index_queries_with_logical_operators.js
index 7514e86aaa4..cd8a9d8063b 100644
--- a/jstests/core/hashed_index_queries_with_logical_operators.js
+++ b/jstests/core/hashed_index_queries_with_logical_operators.js
@@ -3,6 +3,9 @@
* like $or, $not etc. In particular, the hashed field of a compound hashed index cannot generate
* bounds for $not predicates, since we may incorrectly filter out matching documents that collide
* with the same hash value as the one given in the predicate.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/hashed_index_sort.js b/jstests/core/hashed_index_sort.js
index 5f8d87a752a..9c2f3ad5c6d 100644
--- a/jstests/core/hashed_index_sort.js
+++ b/jstests/core/hashed_index_sort.js
@@ -3,10 +3,11 @@
* the 'find' command. The test verifies compound hashed index with hashed prefix and non-hashed
* prefix.
* @tags: [
- * assumes_unsharded_collection,
- * # Sort optimizations added in 4.7 can generate a different plan in the presence of equality
- * # predicates.
- * requires_fcv_47
+ * assumes_unsharded_collection,
+ * # Sort optimizations added in 4.7 can generate a different plan in the presence of equality
+ * # predicates.
+ * requires_fcv_47,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/hashed_partial_and_sparse_index.js b/jstests/core/hashed_partial_and_sparse_index.js
index cc6b5f30388..b0fd6ebf9d3 100644
--- a/jstests/core/hashed_partial_and_sparse_index.js
+++ b/jstests/core/hashed_partial_and_sparse_index.js
@@ -2,6 +2,9 @@
* Tests to verify that the queries return correct results in the presence of partial hashed
* index and sparse index. The test verifies compound hashed index with hashed prefix and non-hashed
* prefix.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/hidden_index.js b/jstests/core/hidden_index.js
index 762c8127200..80e124ef5e7 100644
--- a/jstests/core/hidden_index.js
+++ b/jstests/core/hidden_index.js
@@ -3,7 +3,9 @@
* it will not be used in planning. It is handled in the same way as other indexes by the index
* catalog and for TTL purposes.
* @tags: [
- * requires_non_retryable_commands, # CollMod is not retryable.
+ * # CollMod is not retryable.
+ * requires_non_retryable_commands,
+ * sbe_incompatible,
* ]
*/
diff --git a/jstests/core/idhack.js b/jstests/core/idhack.js
index a06e1fd287b..a884fecd920 100644
--- a/jstests/core/idhack.js
+++ b/jstests/core/idhack.js
@@ -1,6 +1,7 @@
// @tags: [
// assumes_balancer_off,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
(function() {
"use strict";
diff --git a/jstests/core/in.js b/jstests/core/in.js
index 852f6bcbca4..0afa2d1d840 100644
--- a/jstests/core/in.js
+++ b/jstests/core/in.js
@@ -6,6 +6,9 @@ t.save({a: 1});
t.save({a: 2});
// $in must take an array as argument: SERVER-7445
+// @tags: [
+// sbe_incompatible,
+// ]
assert.throws(function() {
return t.find({a: {$in: {x: 1}}}).itcount();
});
diff --git a/jstests/core/in5.js b/jstests/core/in5.js
index 69b7bad75dd..e89dc2fd2b7 100644
--- a/jstests/core/in5.js
+++ b/jstests/core/in5.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
t = db.in5;
diff --git a/jstests/core/index13.js b/jstests/core/index13.js
index ec35bc8a669..bc70193ff25 100644
--- a/jstests/core/index13.js
+++ b/jstests/core/index13.js
@@ -1,4 +1,8 @@
-// @tags: [requires_non_retryable_writes, requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Top level match fields within an $elemMatch clause may constrain multiple subfields from a
// compound multikey index. SERVER-3104
diff --git a/jstests/core/index2.js b/jstests/core/index2.js
index 11ef4e68caa..e12ece27019 100644
--- a/jstests/core/index2.js
+++ b/jstests/core/index2.js
@@ -1,4 +1,7 @@
-/* test indexing where the key is an embedded object.
+/**test indexing where the key is an embedded object.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
t = db.embeddedIndexTest2;
diff --git a/jstests/core/index4.js b/jstests/core/index4.js
index b9411a8fe37..aec7ed5f145 100644
--- a/jstests/core/index4.js
+++ b/jstests/core/index4.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// sbe_incompatible,
+// ]
// index4.js
diff --git a/jstests/core/index_bounds_code.js b/jstests/core/index_bounds_code.js
index 52eec12c26b..d2d8dd9fbb1 100644
--- a/jstests/core/index_bounds_code.js
+++ b/jstests/core/index_bounds_code.js
@@ -1,5 +1,9 @@
// Index bounds generation tests for Code/CodeWSCope values.
-// @tags: [requires_non_retryable_writes, assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/index_bounds_maxkey.js b/jstests/core/index_bounds_maxkey.js
index 1b59340fffe..aacfe8c8c8e 100644
--- a/jstests/core/index_bounds_maxkey.js
+++ b/jstests/core/index_bounds_maxkey.js
@@ -2,6 +2,7 @@
// @tags: [
// assumes_unsharded_collection,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
(function() {
"use strict";
diff --git a/jstests/core/index_bounds_minkey.js b/jstests/core/index_bounds_minkey.js
index 78efd322b12..693d124d42c 100644
--- a/jstests/core/index_bounds_minkey.js
+++ b/jstests/core/index_bounds_minkey.js
@@ -2,6 +2,7 @@
// @tags: [
// assumes_unsharded_collection,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
(function() {
"use strict";
diff --git a/jstests/core/index_bounds_object.js b/jstests/core/index_bounds_object.js
index 1b7e12fbd62..8faac1b5d8a 100644
--- a/jstests/core/index_bounds_object.js
+++ b/jstests/core/index_bounds_object.js
@@ -1,5 +1,9 @@
// Index bounds generation tests for Object values.
-// @tags: [requires_non_retryable_writes, assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/index_bounds_pipe.js b/jstests/core/index_bounds_pipe.js
index 35e33e27276..8989d249b8a 100644
--- a/jstests/core/index_bounds_pipe.js
+++ b/jstests/core/index_bounds_pipe.js
@@ -1,6 +1,9 @@
/**
* Tests the tightness of index bounds when attempting to match a regex that contains escaped and
* non-escaped pipe '|' characters.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
'use strict';
diff --git a/jstests/core/index_bounds_timestamp.js b/jstests/core/index_bounds_timestamp.js
index c500f12202b..99260e1d267 100644
--- a/jstests/core/index_bounds_timestamp.js
+++ b/jstests/core/index_bounds_timestamp.js
@@ -1,6 +1,9 @@
// Index bounds generation tests for Timestamp values.
// This file tests whether index bounds for timestamps are generated properly in terms of
// inclusiveness and exactness.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/index_check2.js b/jstests/core/index_check2.js
index 85f49aa1d14..8feeb7d42a8 100644
--- a/jstests/core/index_check2.js
+++ b/jstests/core/index_check2.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// requires_getmore,
+// sbe_incompatible,
+// ]
t = db.index_check2;
t.drop();
diff --git a/jstests/core/index_check3.js b/jstests/core/index_check3.js
index 89e3bba439f..306b7415592 100644
--- a/jstests/core/index_check3.js
+++ b/jstests/core/index_check3.js
@@ -1,4 +1,7 @@
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
t = db.index_check3;
t.drop();
diff --git a/jstests/core/index_check6.js b/jstests/core/index_check6.js
index 6e5ccdb7a4c..20310d2b0dd 100644
--- a/jstests/core/index_check6.js
+++ b/jstests/core/index_check6.js
@@ -1,6 +1,9 @@
// This test makes assertions about how many keys are examined during query execution, which can
// change depending on whether/how many documents are filtered out by the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
t = db.index_check6;
t.drop();
diff --git a/jstests/core/index_check7.js b/jstests/core/index_check7.js
index d02725616a8..ae7ae7c9c71 100644
--- a/jstests/core/index_check7.js
+++ b/jstests/core/index_check7.js
@@ -1,4 +1,7 @@
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
t = db.index_check7;
t.drop();
diff --git a/jstests/core/index_decimal.js b/jstests/core/index_decimal.js
index 73f74eda0f7..d7601b81bd7 100644
--- a/jstests/core/index_decimal.js
+++ b/jstests/core/index_decimal.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because queries on a sharded collection are not
// able to be covered when they aren't on the shard key since the document needs to be fetched in
// order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Test indexing of decimal numbers
(function() {
diff --git a/jstests/core/index_diag.js b/jstests/core/index_diag.js
index 686a9e34b02..b336e5cc141 100644
--- a/jstests/core/index_diag.js
+++ b/jstests/core/index_diag.js
@@ -1,5 +1,6 @@
// @tags: [
// assumes_balancer_off,
+// sbe_incompatible,
// ]
load("jstests/libs/fixture_helpers.js");
diff --git a/jstests/core/index_elemmatch1.js b/jstests/core/index_elemmatch1.js
index 3957e9d185c..23e92aedf78 100644
--- a/jstests/core/index_elemmatch1.js
+++ b/jstests/core/index_elemmatch1.js
@@ -1,6 +1,9 @@
/**
* Tests find with $elemMatch when supporting indexes are in place.
- * @tags: [assumes_balancer_off]
+ * @tags: [
+ * assumes_balancer_off,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/index_elemmatch2.js b/jstests/core/index_elemmatch2.js
index 19d744ce41d..d90606ff1ba 100644
--- a/jstests/core/index_elemmatch2.js
+++ b/jstests/core/index_elemmatch2.js
@@ -1,6 +1,9 @@
/**
* Test that queries containing $elemMatch correctly use an index if each child expression is
* compatible with the index.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/index_filter_catalog_independent.js b/jstests/core/index_filter_catalog_independent.js
index 32c7c1669a6..2712640bd1a 100644
--- a/jstests/core/index_filter_catalog_independent.js
+++ b/jstests/core/index_filter_catalog_independent.js
@@ -4,10 +4,10 @@
*
* @tags: [
* # This test performs queries with index filters set up. Since index filters are local to a
- * # mongod, and do not replicate, this test must issue all of its commands against the same
- * # node.
+ * # mongod, and do not replicate, this test must issue all of its commands against the same node.
* assumes_read_preference_unchanged,
* does_not_support_stepdowns,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/index_filter_collation.js b/jstests/core/index_filter_collation.js
index d6fa0daaa73..c23fd18c643 100644
--- a/jstests/core/index_filter_collation.js
+++ b/jstests/core/index_filter_collation.js
@@ -1,13 +1,14 @@
/**
* Test that index filters are applied with the correct collation.
* @tags: [
+ * # Needs to create a collection with a collation.
+ * assumes_no_implicit_collection_creation_after_drop,
* # This test attempts to perform queries with plan cache filters set up. The former operation
* # may be routed to a secondary in the replica set, whereas the latter must be routed to the
* # primary.
* assumes_read_preference_unchanged,
* does_not_support_stepdowns,
- * # Needs to create a collection with a collation.
- * assumes_no_implicit_collection_creation_after_drop
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/index_filter_commands.js b/jstests/core/index_filter_commands.js
index 9eb5e5f6688..cf40d986e50 100644
--- a/jstests/core/index_filter_commands.js
+++ b/jstests/core/index_filter_commands.js
@@ -26,10 +26,11 @@
* # This test attempts to perform queries with plan cache filters set up. The former operation
* # may be routed to a secondary in the replica set, whereas the latter must be routed to the
* # primary.
- * assumes_read_preference_unchanged,
* assumes_read_concern_unchanged,
- * does_not_support_stepdowns,
+ * assumes_read_preference_unchanged,
* assumes_unsharded_collection,
+ * does_not_support_stepdowns,
+ * sbe_incompatible,
* ]
*/
diff --git a/jstests/core/index_filter_on_hidden_index.js b/jstests/core/index_filter_on_hidden_index.js
index c3a93e25a6c..a5b6b00e526 100644
--- a/jstests/core/index_filter_on_hidden_index.js
+++ b/jstests/core/index_filter_on_hidden_index.js
@@ -10,8 +10,9 @@
* used until it is made visible.
*
* @tags: [
- * # Command 'planCacheSetFilter' may return different values after a failover.
- * does_not_support_stepdowns,
+ * # Command 'planCacheSetFilter' may return different values after a failover.
+ * does_not_support_stepdowns,
+ * sbe_incompatible,
* ]
*/
diff --git a/jstests/core/index_large_and_small_dates.js b/jstests/core/index_large_and_small_dates.js
index 759f5b762a2..66df2ac8661 100644
--- a/jstests/core/index_large_and_small_dates.js
+++ b/jstests/core/index_large_and_small_dates.js
@@ -4,6 +4,9 @@ const coll = db.index_dates;
coll.drop();
// Min value for JS Date().
+// @tags: [
+// sbe_incompatible,
+// ]
const d1 = new Date(-8640000000000000);
assert.commandWorked(coll.insert({_id: 1, d: d1}));
// Max value for JS Date().
diff --git a/jstests/core/index_multikey.js b/jstests/core/index_multikey.js
index 32ff3bd58c4..fe25656eb02 100644
--- a/jstests/core/index_multikey.js
+++ b/jstests/core/index_multikey.js
@@ -1,6 +1,9 @@
/**
* Tests that an index properly reports multikeyness and multikey paths metadata in the presence of
* successful and unsuccessful inserts.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/index_partial_2dsphere.js b/jstests/core/index_partial_2dsphere.js
index a194cf30d84..21f34bf932a 100644
--- a/jstests/core/index_partial_2dsphere.js
+++ b/jstests/core/index_partial_2dsphere.js
@@ -1,6 +1,9 @@
// A document with invalid GeoJSON should be able to be removed or updated when it is not part of
// a partial index filter.
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
(function() {
diff --git a/jstests/core/index_partial_read_ops.js b/jstests/core/index_partial_read_ops.js
index 31ee6009b12..c738201a807 100644
--- a/jstests/core/index_partial_read_ops.js
+++ b/jstests/core/index_partial_read_ops.js
@@ -1,6 +1,11 @@
// Cannot implicitly shard accessed collections because the explain output from a mongod when run
// against a sharded collection is wrapped in a "shards" object with keys for each shard.
-// @tags: [assumes_unsharded_collection, does_not_support_stepdowns, requires_fcv_47]
+// @tags: [
+// assumes_unsharded_collection,
+// does_not_support_stepdowns,
+// requires_fcv_47,
+// sbe_incompatible,
+// ]
// Read ops tests for partial indexes.
diff --git a/jstests/core/index_sort_within_multiple_point_ranges.js b/jstests/core/index_sort_within_multiple_point_ranges.js
index bbf175e9d9e..d75859286b3 100644
--- a/jstests/core/index_sort_within_multiple_point_ranges.js
+++ b/jstests/core/index_sort_within_multiple_point_ranges.js
@@ -1,4 +1,4 @@
-/*
+/**
* This is a regression test for SERVER-45508, which was an invariant failure in the query planner.
*
* Previously the invariant would be triggered only when all of these happen together:
@@ -7,7 +7,10 @@
* - the point ranges are indexed in descending order
* - more than one index can satisfy the query
* - the query asks for a sort within each point range
- * @tags: [assumes_no_implicit_collection_creation_after_drop]
+ * @tags: [
+ * assumes_no_implicit_collection_creation_after_drop,
+ * sbe_incompatible,
+ * ]
*/
(function() {
'use strict';
diff --git a/jstests/core/index_stats.js b/jstests/core/index_stats.js
index a23f54d6f33..1d465e3f681 100644
--- a/jstests/core/index_stats.js
+++ b/jstests/core/index_stats.js
@@ -9,6 +9,7 @@
// assumes_unsharded_collection,
// does_not_support_stepdowns,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
(function() {
diff --git a/jstests/core/index_type_change.js b/jstests/core/index_type_change.js
index 96f020c9ec8..4ecb5081347 100644
--- a/jstests/core/index_type_change.js
+++ b/jstests/core/index_type_change.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because of following errmsg: A single
// update/delete on a sharded collection must contain an exact match on _id or contain the shard
// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
/**
* Tests that replacing a document with an equivalent document with different types for the fields
diff --git a/jstests/core/indexes_multiple_commands.js b/jstests/core/indexes_multiple_commands.js
index f2b97f0e4f5..abcb7b58500 100644
--- a/jstests/core/indexes_multiple_commands.js
+++ b/jstests/core/indexes_multiple_commands.js
@@ -1,6 +1,9 @@
// Cannot implicitly shard accessed collections because of collection existing when none
// expected.
-// @tags: [assumes_no_implicit_collection_creation_after_drop]
+// @tags: [
+// assumes_no_implicit_collection_creation_after_drop,
+// sbe_incompatible,
+// ]
// Test that commands behave correctly under the presence of multiple indexes with the same key
// pattern.
diff --git a/jstests/core/indexf.js b/jstests/core/indexf.js
index 5a126b3e22f..cbe1b968b5e 100644
--- a/jstests/core/indexf.js
+++ b/jstests/core/indexf.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.indexf;
t.drop();
diff --git a/jstests/core/indexj.js b/jstests/core/indexj.js
index 4236ce0a535..76bf8cb17e9 100644
--- a/jstests/core/indexj.js
+++ b/jstests/core/indexj.js
@@ -1,7 +1,10 @@
// SERVER-726
// This test makes assertions about how many keys are examined during query execution, which can
// change depending on whether/how many documents are filtered out by the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
t = db.jstests_indexj;
t.drop();
diff --git a/jstests/core/indexn.js b/jstests/core/indexn.js
index 416f0ec31b2..014ba050cbc 100644
--- a/jstests/core/indexn.js
+++ b/jstests/core/indexn.js
@@ -1,5 +1,8 @@
// Test "impossible match" queries, or queries that will always have
// an empty result set.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_indexn;
t.drop();
diff --git a/jstests/core/indexr.js b/jstests/core/indexr.js
index 9d8f9a29ea8..15cd56e9681 100644
--- a/jstests/core/indexr.js
+++ b/jstests/core/indexr.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Check multikey index cases with parallel nested fields SERVER-958.
diff --git a/jstests/core/indexu.js b/jstests/core/indexu.js
index d430f936696..22af42d5d6a 100644
--- a/jstests/core/indexu.js
+++ b/jstests/core/indexu.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Test index key generation with duplicate values addressed by array index and
// object field. SERVER-2902
diff --git a/jstests/core/introspect_hidden_index_plan_cache_entries.js b/jstests/core/introspect_hidden_index_plan_cache_entries.js
index 78e2beb32ed..1ba2950b7ae 100644
--- a/jstests/core/introspect_hidden_index_plan_cache_entries.js
+++ b/jstests/core/introspect_hidden_index_plan_cache_entries.js
@@ -1,4 +1,4 @@
-/*
+/**
* Test that the query plan cache will be cleared for the given collection on hiding or unhiding an
* index.
*
@@ -6,8 +6,9 @@
* # This test attempts to perform queries and introspect the server's plan cache entries. The
* # former operation may be routed to a secondary in the replica set, whereas the latter must be
* # routed to the primary.
- * assumes_read_preference_unchanged,
* assumes_read_concern_unchanged,
+ * assumes_read_preference_unchanged,
+ * sbe_incompatible,
* ]
*/
diff --git a/jstests/core/invalidated_legacy_cursors.js b/jstests/core/invalidated_legacy_cursors.js
index 95cb1a0802f..a72f7f572a9 100644
--- a/jstests/core/invalidated_legacy_cursors.js
+++ b/jstests/core/invalidated_legacy_cursors.js
@@ -1,7 +1,12 @@
-/*
+/**
* Test that all DBClientCursor cursor types throw an exception when the server returns
* CursorNotFound.
- * @tags: [requires_getmore, requires_non_retryable_commands, assumes_balancer_off]
+ * @tags: [
+ * assumes_balancer_off,
+ * requires_getmore,
+ * requires_non_retryable_commands,
+ * sbe_incompatible,
+ * ]
*/
(function() {
'use strict';
diff --git a/jstests/core/js1.js b/jstests/core/js1.js
index 7c8c16a8236..ecb81046e53 100644
--- a/jstests/core/js1.js
+++ b/jstests/core/js1.js
@@ -1,8 +1,8 @@
// @tags: [
-// requires_non_retryable_writes,
-//
-// # Uses $where operator
-// requires_scripting
+// requires_non_retryable_writes,
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.jstests_js1;
diff --git a/jstests/core/js3.js b/jstests/core/js3.js
index b5ad9ae03fd..89847210714 100644
--- a/jstests/core/js3.js
+++ b/jstests/core/js3.js
@@ -1,8 +1,9 @@
// @tags: [
// assumes_unsharded_collection,
+// requires_fastcount,
// requires_javascript,
// requires_non_retryable_commands,
-// requires_fastcount,
+// sbe_incompatible,
// ]
t = db.jstests_js3;
diff --git a/jstests/core/js4.js b/jstests/core/js4.js
index 6c9f158de6a..cff3d077acf 100644
--- a/jstests/core/js4.js
+++ b/jstests/core/js4.js
@@ -1,6 +1,7 @@
// @tags: [
-// # Uses $where operator
-// requires_scripting
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.jstests_js4;
diff --git a/jstests/core/js8.js b/jstests/core/js8.js
index 9504d2a7ac5..d322bf7bd5e 100644
--- a/jstests/core/js8.js
+++ b/jstests/core/js8.js
@@ -1,6 +1,7 @@
// @tags: [
-// # Uses $where operator
-// requires_scripting,
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.jstests_js8;
diff --git a/jstests/core/json_schema/additional_items.js b/jstests/core/json_schema/additional_items.js
index 7165e9d4363..fdab99cd64b 100644
--- a/jstests/core/json_schema/additional_items.js
+++ b/jstests/core/json_schema/additional_items.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests the JSON Schema "additionalItems" keyword.
diff --git a/jstests/core/json_schema/additional_properties.js b/jstests/core/json_schema/additional_properties.js
index 0a78d2415ef..9145d74016c 100644
--- a/jstests/core/json_schema/additional_properties.js
+++ b/jstests/core/json_schema/additional_properties.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for the JSON Schema 'additionalProperties' keyword.
diff --git a/jstests/core/json_schema/bsontype.js b/jstests/core/json_schema/bsontype.js
index ac874c66788..08e0a925065 100644
--- a/jstests/core/json_schema/bsontype.js
+++ b/jstests/core/json_schema/bsontype.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for the non-standard 'bsonType' keyword in JSON Schema, as well as some tests for 'type'.
diff --git a/jstests/core/json_schema/dependencies.js b/jstests/core/json_schema/dependencies.js
index ffcd917889b..d63ee75af54 100644
--- a/jstests/core/json_schema/dependencies.js
+++ b/jstests/core/json_schema/dependencies.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for the JSON Schema 'dependencies' keyword.
diff --git a/jstests/core/json_schema/encrypt.js b/jstests/core/json_schema/encrypt.js
index 32d93f43da4..1754b9490bb 100644
--- a/jstests/core/json_schema/encrypt.js
+++ b/jstests/core/json_schema/encrypt.js
@@ -3,6 +3,7 @@
*
* @tags: [
* requires_non_retryable_commands,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/json_schema/items.js b/jstests/core/json_schema/items.js
index 3bb71c79c7d..b9fd63611cd 100644
--- a/jstests/core/json_schema/items.js
+++ b/jstests/core/json_schema/items.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests the JSON Schema "items" keyword.
diff --git a/jstests/core/json_schema/json_schema.js b/jstests/core/json_schema/json_schema.js
index 7611cefaa3a..857f576f86a 100644
--- a/jstests/core/json_schema/json_schema.js
+++ b/jstests/core/json_schema/json_schema.js
@@ -1,5 +1,9 @@
// listCollections tests expect that a collection is not implicitly created after a drop.
-// @tags: [assumes_no_implicit_collection_creation_after_drop, requires_non_retryable_commands]
+// @tags: [
+// assumes_no_implicit_collection_creation_after_drop,
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for JSON Schema document validation.
diff --git a/jstests/core/json_schema/logical_keywords.js b/jstests/core/json_schema/logical_keywords.js
index 3b7895f27cd..0b7727b49d8 100644
--- a/jstests/core/json_schema/logical_keywords.js
+++ b/jstests/core/json_schema/logical_keywords.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for the JSON Schema logical keywords, including:
diff --git a/jstests/core/json_schema/min_max_items.js b/jstests/core/json_schema/min_max_items.js
index 3c27283a037..8b276411edc 100644
--- a/jstests/core/json_schema/min_max_items.js
+++ b/jstests/core/json_schema/min_max_items.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests the JSON Schema keywords "minItems" and "maxItems".
diff --git a/jstests/core/json_schema/min_max_properties.js b/jstests/core/json_schema/min_max_properties.js
index 975a22fd527..cba210d9c68 100644
--- a/jstests/core/json_schema/min_max_properties.js
+++ b/jstests/core/json_schema/min_max_properties.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for the JSON Schema 'minProperties' and 'maxProperties' keywords.
diff --git a/jstests/core/json_schema/misc_validation.js b/jstests/core/json_schema/misc_validation.js
index 045a7c74878..2949a55ed92 100644
--- a/jstests/core/json_schema/misc_validation.js
+++ b/jstests/core/json_schema/misc_validation.js
@@ -1,4 +1,4 @@
-/*
+/**
* Test for $jsonSchema behavior in contexts other than document validation, including:
* - read commands (count, geoNear, distinct, etc)
* - queries that specify a collation
@@ -17,6 +17,7 @@
* requires_non_retryable_commands,
* requires_non_retryable_writes,
* requires_replication,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/json_schema/pattern_properties.js b/jstests/core/json_schema/pattern_properties.js
index 4c75b78f72a..f09a030633a 100644
--- a/jstests/core/json_schema/pattern_properties.js
+++ b/jstests/core/json_schema/pattern_properties.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for the JSON Schema 'patternProperties' keyword.
diff --git a/jstests/core/json_schema/required.js b/jstests/core/json_schema/required.js
index a9a0cd67a48..e3b62ddd1ba 100644
--- a/jstests/core/json_schema/required.js
+++ b/jstests/core/json_schema/required.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests for handling of the JSON Schema 'required' keyword.
diff --git a/jstests/core/json_schema/unique_items.js b/jstests/core/json_schema/unique_items.js
index 955bae74e88..4654f515465 100644
--- a/jstests/core/json_schema/unique_items.js
+++ b/jstests/core/json_schema/unique_items.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests the JSON Schema "uniqueItems" keyword.
diff --git a/jstests/core/list_sessions.js b/jstests/core/list_sessions.js
index 65345ca7c01..76d93c0d9f5 100644
--- a/jstests/core/list_sessions.js
+++ b/jstests/core/list_sessions.js
@@ -2,6 +2,7 @@
// startSession may cause this test to fail to find the returned sessionId.
// @tags: [
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_testing_only_commands,
// ]
diff --git a/jstests/core/map_reduce_validation.js b/jstests/core/map_reduce_validation.js
index 953bc360626..c59bceb99bf 100644
--- a/jstests/core/map_reduce_validation.js
+++ b/jstests/core/map_reduce_validation.js
@@ -2,6 +2,7 @@
// @tags: [
// assumes_no_implicit_collection_creation_after_drop,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/min_max_bounds.js b/jstests/core/min_max_bounds.js
index 8419e3c0eca..dd9625b95cf 100644
--- a/jstests/core/min_max_bounds.js
+++ b/jstests/core/min_max_bounds.js
@@ -1,6 +1,9 @@
/**
* This test ensures that queries using simple ranges handle bound inclusion properly.
- * @tags: [assumes_balancer_off]
+ * @tags: [
+ * assumes_balancer_off,
+ * sbe_incompatible,
+ * ]
*/
(function() {
'use strict';
diff --git a/jstests/core/min_max_key.js b/jstests/core/min_max_key.js
index b9e9c3d6b89..2d3dbbb87e5 100644
--- a/jstests/core/min_max_key.js
+++ b/jstests/core/min_max_key.js
@@ -1,4 +1,7 @@
// Tests the behavior of queries using MinKey and MaxKey
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/mod1.js b/jstests/core/mod1.js
index c325c3ee315..64c607d5cf7 100644
--- a/jstests/core/mod1.js
+++ b/jstests/core/mod1.js
@@ -1,8 +1,9 @@
// Tests the behavior of $mod for match expressions.
// @tags: [
-// # Uses $where operator
-// requires_scripting,
-// assumes_balancer_off
+// assumes_balancer_off,
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
(function() {
diff --git a/jstests/core/mod_overflow.js b/jstests/core/mod_overflow.js
index 2ec33300ce7..5584f77dc75 100644
--- a/jstests/core/mod_overflow.js
+++ b/jstests/core/mod_overflow.js
@@ -1,6 +1,9 @@
/**
* Tests that modding the smallest representable integer values by -1 does not result in integer
* overflow. Exercises the fix for SERVER-43699.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/mr_agg_explain.js b/jstests/core/mr_agg_explain.js
index e3d7a1be612..7d1d11bb28a 100644
--- a/jstests/core/mr_agg_explain.js
+++ b/jstests/core/mr_agg_explain.js
@@ -2,6 +2,7 @@
* Tests that running mapReduce with explain behaves as expected.
* @tags: [
* incompatible_with_embedded,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/mr_bigobject.js b/jstests/core/mr_bigobject.js
index ed534f8fc67..a9b9bd03047 100644
--- a/jstests/core/mr_bigobject.js
+++ b/jstests/core/mr_bigobject.js
@@ -4,6 +4,7 @@
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
// requires_fastcount,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_bigobject_replace.js b/jstests/core/mr_bigobject_replace.js
index e9fc2c0aba3..20c2356e26f 100644
--- a/jstests/core/mr_bigobject_replace.js
+++ b/jstests/core/mr_bigobject_replace.js
@@ -5,6 +5,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
diff --git a/jstests/core/mr_comments.js b/jstests/core/mr_comments.js
index 48441078ebb..4b2489d1df7 100644
--- a/jstests/core/mr_comments.js
+++ b/jstests/core/mr_comments.js
@@ -3,6 +3,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_compute_avg.js b/jstests/core/mr_compute_avg.js
index a0320679ea0..3f51d84b6b1 100644
--- a/jstests/core/mr_compute_avg.js
+++ b/jstests/core/mr_compute_avg.js
@@ -9,6 +9,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_correctness.js b/jstests/core/mr_correctness.js
index 9dc6aaf1c4c..815c20fc7e8 100644
--- a/jstests/core/mr_correctness.js
+++ b/jstests/core/mr_correctness.js
@@ -5,6 +5,7 @@
// does_not_support_stepdowns,
// requires_fastcount,
// requires_getmore,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_fail_invalid_js.js b/jstests/core/mr_fail_invalid_js.js
index 01b422c1fe3..1361c72a51b 100644
--- a/jstests/core/mr_fail_invalid_js.js
+++ b/jstests/core/mr_fail_invalid_js.js
@@ -4,6 +4,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_killop.js b/jstests/core/mr_killop.js
index 925da1118b8..d0626047ed9 100644
--- a/jstests/core/mr_killop.js
+++ b/jstests/core/mr_killop.js
@@ -3,6 +3,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// uses_multiple_connections,
// uses_parallel_shell,
diff --git a/jstests/core/mr_merge.js b/jstests/core/mr_merge.js
index fa9d2c3d873..1f00a898e49 100644
--- a/jstests/core/mr_merge.js
+++ b/jstests/core/mr_merge.js
@@ -6,6 +6,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_multikey_deduping.js b/jstests/core/mr_multikey_deduping.js
index ea1ddcfb2c6..604635a67fc 100644
--- a/jstests/core/mr_multikey_deduping.js
+++ b/jstests/core/mr_multikey_deduping.js
@@ -7,6 +7,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
diff --git a/jstests/core/mr_mutable_properties.js b/jstests/core/mr_mutable_properties.js
index d7399fa337e..213ac1fbd76 100644
--- a/jstests/core/mr_mutable_properties.js
+++ b/jstests/core/mr_mutable_properties.js
@@ -2,6 +2,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// ]
// See SERVER-9448
diff --git a/jstests/core/mr_null_arguments.js b/jstests/core/mr_null_arguments.js
index 5cca8210656..9eeec78654d 100644
--- a/jstests/core/mr_null_arguments.js
+++ b/jstests/core/mr_null_arguments.js
@@ -5,6 +5,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_preserve_indexes.js b/jstests/core/mr_preserve_indexes.js
index dd4f47af171..a4e33166937 100644
--- a/jstests/core/mr_preserve_indexes.js
+++ b/jstests/core/mr_preserve_indexes.js
@@ -3,6 +3,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_reduce.js b/jstests/core/mr_reduce.js
index aded1cf471d..37ef489b9be 100644
--- a/jstests/core/mr_reduce.js
+++ b/jstests/core/mr_reduce.js
@@ -6,6 +6,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_reduce_merge_other_db.js b/jstests/core/mr_reduce_merge_other_db.js
index 80edc601aa2..ec8069d3254 100644
--- a/jstests/core/mr_reduce_merge_other_db.js
+++ b/jstests/core/mr_reduce_merge_other_db.js
@@ -2,6 +2,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_replace_into_other_db.js b/jstests/core/mr_replace_into_other_db.js
index 274aeee3b3b..fe1ec71b70e 100644
--- a/jstests/core/mr_replace_into_other_db.js
+++ b/jstests/core/mr_replace_into_other_db.js
@@ -1,9 +1,10 @@
// @tags: [
+// assumes_unsharded_collection,
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
-// assumes_unsharded_collection,
// ]
//
(function() {
diff --git a/jstests/core/mr_scope.js b/jstests/core/mr_scope.js
index 017d39b9268..04f7e77dbb1 100644
--- a/jstests/core/mr_scope.js
+++ b/jstests/core/mr_scope.js
@@ -3,6 +3,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/mr_sort.js b/jstests/core/mr_sort.js
index 39f92b4143c..df98e6a6d3d 100644
--- a/jstests/core/mr_sort.js
+++ b/jstests/core/mr_sort.js
@@ -5,6 +5,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
diff --git a/jstests/core/mr_stored.js b/jstests/core/mr_stored.js
index 3873bb27d70..58f86d58730 100644
--- a/jstests/core/mr_stored.js
+++ b/jstests/core/mr_stored.js
@@ -6,6 +6,7 @@
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
// requires_non_retryable_writes,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
/**
diff --git a/jstests/core/mr_tolerates_js_exception.js b/jstests/core/mr_tolerates_js_exception.js
index e291639cb92..5a1c0f2f69f 100644
--- a/jstests/core/mr_tolerates_js_exception.js
+++ b/jstests/core/mr_tolerates_js_exception.js
@@ -7,6 +7,7 @@
* does_not_support_causal_consistency,
* does_not_support_stepdowns,
* requires_scripting,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/mr_use_this_object.js b/jstests/core/mr_use_this_object.js
index 8c6061d0fa8..b108d046efd 100644
--- a/jstests/core/mr_use_this_object.js
+++ b/jstests/core/mr_use_this_object.js
@@ -4,6 +4,7 @@
// # mapReduce does not support afterClusterTime.
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
(function() {
diff --git a/jstests/core/multikey_geonear.js b/jstests/core/multikey_geonear.js
index 6d796cb62ff..ad24afb0c98 100644
--- a/jstests/core/multikey_geonear.js
+++ b/jstests/core/multikey_geonear.js
@@ -1,5 +1,8 @@
// Test that we correct return results for compound 2d and 2dsphere indices in
// both the multikey and non-multikey cases.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_multikey_geonear;
t.drop();
diff --git a/jstests/core/nan.js b/jstests/core/nan.js
index fbdba566d7b..76d8b3e2141 100644
--- a/jstests/core/nan.js
+++ b/jstests/core/nan.js
@@ -1,5 +1,8 @@
/**
* Tests basic NaN handling. Note that WiredTiger indexes handle -NaN and NaN differently.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/ne1.js b/jstests/core/ne1.js
index ba0bf7a3de7..c324ab08c26 100644
--- a/jstests/core/ne1.js
+++ b/jstests/core/ne1.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.ne1;
t.drop();
diff --git a/jstests/core/ne2.js b/jstests/core/ne2.js
index 8814688a45b..db2ee7b01e5 100644
--- a/jstests/core/ne2.js
+++ b/jstests/core/ne2.js
@@ -1,4 +1,7 @@
// check that we don't scan $ne values
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_ne2;
t.drop();
diff --git a/jstests/core/ne_array.js b/jstests/core/ne_array.js
index e703d4b13a4..bdb0667cba5 100644
--- a/jstests/core/ne_array.js
+++ b/jstests/core/ne_array.js
@@ -2,7 +2,10 @@
// cannot "naively" use an index. That is, it cannot use an index by simply generating bounds for
// {$eq: <array>} query and then complementing them. This test checks that the correct results are
// returned for this type of query when an index is present.
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
(function() {
const coll = db.ne_array;
coll.drop();
diff --git a/jstests/core/not2.js b/jstests/core/not2.js
index 0692c297762..4de74827a49 100644
--- a/jstests/core/not2.js
+++ b/jstests/core/not2.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/not3.js b/jstests/core/not3.js
index 9f3014f2c1a..d7b8e33d2ee 100644
--- a/jstests/core/not3.js
+++ b/jstests/core/not3.js
@@ -1,5 +1,8 @@
// Check that we return the correct results for negations over a
// multikey index.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_not3;
t.drop();
diff --git a/jstests/core/notablescan.js b/jstests/core/notablescan.js
index 2bbc300238d..eca1bd2e787 100644
--- a/jstests/core/notablescan.js
+++ b/jstests/core/notablescan.js
@@ -8,6 +8,7 @@
// assumes_read_preference_unchanged,
// assumes_superuser_permissions,
// does_not_support_stepdowns,
+// sbe_incompatible,
// ]
t = db.test_notablescan;
diff --git a/jstests/core/null_query_semantics.js b/jstests/core/null_query_semantics.js
index 00aaacd6ed0..e13e0f5d0a8 100644
--- a/jstests/core/null_query_semantics.js
+++ b/jstests/core/null_query_semantics.js
@@ -1,4 +1,7 @@
// Tests the behavior of queries with a {$eq: null} or {$ne: null} predicate.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/numberlong2.js b/jstests/core/numberlong2.js
index ca162ddf53f..4eadb744131 100644
--- a/jstests/core/numberlong2.js
+++ b/jstests/core/numberlong2.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Test precision of NumberLong values with v1 index code SERVER-3717
diff --git a/jstests/core/operation_latency_histogram.js b/jstests/core/operation_latency_histogram.js
index 08ed2312e03..2bda026025c 100644
--- a/jstests/core/operation_latency_histogram.js
+++ b/jstests/core/operation_latency_histogram.js
@@ -6,9 +6,10 @@
// compact does not exist on such storage engines.
//
// @tags: [
-// assumes_read_preference_unchanged,
-// requires_collstats,
-// incompatible_with_embedded,
+// assumes_read_preference_unchanged,
+// incompatible_with_embedded,
+// requires_collstats,
+// sbe_incompatible,
// ]
//
diff --git a/jstests/core/optimized_match_explain.js b/jstests/core/optimized_match_explain.js
index f62474124b4..898a37e30c9 100644
--- a/jstests/core/optimized_match_explain.js
+++ b/jstests/core/optimized_match_explain.js
@@ -1,4 +1,7 @@
-// @tags: [does_not_support_stepdowns]
+// @tags: [
+// does_not_support_stepdowns,
+// sbe_incompatible,
+// ]
/**
* Tests that the explain output for $match reflects any optimizations.
diff --git a/jstests/core/or1.js b/jstests/core/or1.js
index c5975a058f2..db6767923d1 100644
--- a/jstests/core/or1.js
+++ b/jstests/core/or1.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.jstests_or1;
t.drop();
diff --git a/jstests/core/or2.js b/jstests/core/or2.js
index 93f738a866d..5b520197eba 100644
--- a/jstests/core/or2.js
+++ b/jstests/core/or2.js
@@ -2,6 +2,9 @@ t = db.jstests_or2;
t.drop();
// Include helpers for analyzing explain output.
+// @tags: [
+// sbe_incompatible,
+// ]
load("jstests/libs/analyze_plan.js");
checkArrs = function(a, b) {
diff --git a/jstests/core/or3.js b/jstests/core/or3.js
index 0c831c8987b..22a26d571ca 100644
--- a/jstests/core/or3.js
+++ b/jstests/core/or3.js
@@ -2,6 +2,9 @@ t = db.jstests_or3;
t.drop();
// Include helpers for analyzing explain output.
+// @tags: [
+// sbe_incompatible,
+// ]
load("jstests/libs/analyze_plan.js");
checkArrs = function(a, b) {
diff --git a/jstests/core/or4.js b/jstests/core/or4.js
index 8cb5163544a..f065ccbec86 100644
--- a/jstests/core/or4.js
+++ b/jstests/core/or4.js
@@ -3,6 +3,7 @@
// requires_fastcount,
// requires_getmore,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
load("jstests/aggregation/extras/utils.js"); // For resultsEq
diff --git a/jstests/core/or5.js b/jstests/core/or5.js
index e0af20752f0..40d7792eeeb 100644
--- a/jstests/core/or5.js
+++ b/jstests/core/or5.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
t = db.jstests_or5;
t.drop();
diff --git a/jstests/core/or6.js b/jstests/core/or6.js
index 2a8263e298f..144f9ed7e9e 100644
--- a/jstests/core/or6.js
+++ b/jstests/core/or6.js
@@ -1,4 +1,7 @@
// A few rooted $or cases.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_orq;
t.drop();
diff --git a/jstests/core/or8.js b/jstests/core/or8.js
index def8a79c19e..41537dbdf83 100644
--- a/jstests/core/or8.js
+++ b/jstests/core/or8.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// missing collection
diff --git a/jstests/core/or_inexact.js b/jstests/core/or_inexact.js
index 17aeea618b3..d6a51d66259 100644
--- a/jstests/core/or_inexact.js
+++ b/jstests/core/or_inexact.js
@@ -1,5 +1,8 @@
// Test $or with predicates that generate inexact bounds. The access planner
// has special logic for such queries.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_or_inexact;
var cursor;
diff --git a/jstests/core/ord.js b/jstests/core/ord.js
index 2cd2cef0a66..ddbae540ffc 100644
--- a/jstests/core/ord.js
+++ b/jstests/core/ord.js
@@ -1,4 +1,7 @@
// check that we don't crash if an index used by an earlier or clause is dropped
+// @tags: [
+// sbe_incompatible,
+// ]
// Dropping an index kills all cursors on the indexed namespace, not just those
// cursors using the dropped index. This test is to serve as a reminder that
diff --git a/jstests/core/orf.js b/jstests/core/orf.js
index 66d943aa764..ba226a8f6e8 100644
--- a/jstests/core/orf.js
+++ b/jstests/core/orf.js
@@ -1,5 +1,8 @@
// Test a query with 200 $or clauses
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
t = db.jstests_orf;
t.drop();
diff --git a/jstests/core/orj.js b/jstests/core/orj.js
index 683f45253a8..0ec304d9e52 100644
--- a/jstests/core/orj.js
+++ b/jstests/core/orj.js
@@ -1,4 +1,7 @@
// Test nested $or clauses SERVER-2585 SERVER-3192
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_orj;
t.drop();
diff --git a/jstests/core/ork.js b/jstests/core/ork.js
index 7c9bc982776..7f203c74e5f 100644
--- a/jstests/core/ork.js
+++ b/jstests/core/ork.js
@@ -1,4 +1,7 @@
// SERVER-2585 Test $or clauses within indexed top level $or clauses.
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_ork;
t.drop();
diff --git a/jstests/core/oro.js b/jstests/core/oro.js
index 65e9168029a..80684869f6d 100644
--- a/jstests/core/oro.js
+++ b/jstests/core/oro.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, requires_collstats]
+// @tags: [
+// requires_collstats,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test $or query with several clauses on separate indexes.
diff --git a/jstests/core/plan_cache_clear.js b/jstests/core/plan_cache_clear.js
index 250e07be952..3bbc9824c4a 100644
--- a/jstests/core/plan_cache_clear.js
+++ b/jstests/core/plan_cache_clear.js
@@ -5,12 +5,13 @@
// # This test attempts to perform queries and introspect/manipulate the server's plan cache
// # entries. The former operation may be routed to a secondary in the replica set, whereas the
// # latter must be routed to the primary.
-// # If all chunks are moved off of a shard, it can cause the plan cache to miss commands.
-// assumes_read_preference_unchanged,
// assumes_read_concern_unchanged,
+// assumes_read_preference_unchanged,
// does_not_support_stepdowns,
+// # If all chunks are moved off of a shard, it can cause the plan cache to miss commands.
// assumes_balancer_off,
// assumes_unsharded_collection,
+// sbe_incompatible,
// ]
(function() {
diff --git a/jstests/core/plan_cache_list_plans.js b/jstests/core/plan_cache_list_plans.js
index 13c28cfb1a8..354fa05a55c 100644
--- a/jstests/core/plan_cache_list_plans.js
+++ b/jstests/core/plan_cache_list_plans.js
@@ -12,6 +12,7 @@
// assumes_unsharded_collection,
// does_not_support_stepdowns,
// inspects_whether_plan_cache_entry_is_active,
+// sbe_incompatible,
// ]
(function() {
diff --git a/jstests/core/plan_cache_list_shapes.js b/jstests/core/plan_cache_list_shapes.js
index e682f34ecd1..fb776a19adf 100644
--- a/jstests/core/plan_cache_list_shapes.js
+++ b/jstests/core/plan_cache_list_shapes.js
@@ -2,15 +2,16 @@
// for a particular collection.
//
// @tags: [
+// # If all chunks are moved off of a shard, it can cause the plan cache to miss commands.
+// assumes_balancer_off,
+// does_not_support_stepdowns,
// # This test attempts to perform queries with plan cache filters set up. The former operation
// # may be routed to a secondary in the replica set, whereas the latter must be routed to the
// # primary.
-// # If all chunks are moved off of a shard, it can cause the plan cache to miss commands.
-// assumes_read_preference_unchanged,
// assumes_read_concern_unchanged,
-// does_not_support_stepdowns,
-// assumes_balancer_off,
+// assumes_read_preference_unchanged,
// assumes_unsharded_collection,
+// sbe_incompatible,
// ]
(function() {
const coll = db.jstests_plan_cache_list_shapes;
diff --git a/jstests/core/plan_cache_shell_helpers.js b/jstests/core/plan_cache_shell_helpers.js
index aba0d20047e..da0510befed 100644
--- a/jstests/core/plan_cache_shell_helpers.js
+++ b/jstests/core/plan_cache_shell_helpers.js
@@ -10,6 +10,7 @@
// assumes_read_preference_unchanged,
// assumes_unsharded_collection,
// does_not_support_stepdowns,
+// sbe_incompatible,
// ]
(function() {
var coll = db.jstests_plan_cache_shell_helpers;
diff --git a/jstests/core/plan_cache_stats_shard_and_host.js b/jstests/core/plan_cache_stats_shard_and_host.js
index 573050ec41e..b96c47134e9 100644
--- a/jstests/core/plan_cache_stats_shard_and_host.js
+++ b/jstests/core/plan_cache_stats_shard_and_host.js
@@ -6,6 +6,7 @@
// assumes_read_concern_unchanged,
// assumes_read_preference_unchanged,
// does_not_support_stepdowns,
+// sbe_incompatible,
// ]
(function() {
"use strict";
diff --git a/jstests/core/positional_projection_multiple_array_fields.js b/jstests/core/positional_projection_multiple_array_fields.js
index dbeba9fcced..63e4f0a3b85 100644
--- a/jstests/core/positional_projection_multiple_array_fields.js
+++ b/jstests/core/positional_projection_multiple_array_fields.js
@@ -4,6 +4,9 @@
*
* Note that the user's query/filter document may only contain _ONE_ array field for positional
* projection to work correctly.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/profile1.js b/jstests/core/profile1.js
index 485b26f29fa..6fce5d9e74c 100644
--- a/jstests/core/profile1.js
+++ b/jstests/core/profile1.js
@@ -6,6 +6,7 @@
// requires_collstats,
// requires_non_retryable_commands,
// requires_profiling,
+// sbe_incompatible,
// ]
(function() {
diff --git a/jstests/core/profile2.js b/jstests/core/profile2.js
index f8f0040683e..d58fe533dd9 100644
--- a/jstests/core/profile2.js
+++ b/jstests/core/profile2.js
@@ -1,7 +1,10 @@
// Tests that large queries and updates are properly profiled.
// Special db so that it can be run in parallel tests.
-// @tags: [requires_profiling]
+// @tags: [
+// requires_profiling,
+// sbe_incompatible,
+// ]
var coll = db.getSisterDB("profile2").profile2;
diff --git a/jstests/core/profile3.js b/jstests/core/profile3.js
index 71baa67e563..5dc23bdac8b 100644
--- a/jstests/core/profile3.js
+++ b/jstests/core/profile3.js
@@ -2,6 +2,7 @@
// assumes_superuser_permissions,
// creates_and_authenticates_user,
// requires_profiling,
+// sbe_incompatible,
// ]
// special db so that it can be run in parallel tests
var stddb = db;
diff --git a/jstests/core/profile_agg.js b/jstests/core/profile_agg.js
index d8e96d46646..9eed6e1687f 100644
--- a/jstests/core/profile_agg.js
+++ b/jstests/core/profile_agg.js
@@ -1,4 +1,8 @@
-// @tags: [does_not_support_stepdowns, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that profiled aggregation execution contains all expected metrics with proper values.
diff --git a/jstests/core/profile_count.js b/jstests/core/profile_count.js
index d2b998df850..71d8646bbed 100644
--- a/jstests/core/profile_count.js
+++ b/jstests/core/profile_count.js
@@ -1,4 +1,9 @@
-// @tags: [does_not_support_stepdowns, requires_fastcount, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_fastcount,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that profiled count execution contains all expected metrics with proper values.
diff --git a/jstests/core/profile_delete.js b/jstests/core/profile_delete.js
index 500320afe6c..025d063848e 100644
--- a/jstests/core/profile_delete.js
+++ b/jstests/core/profile_delete.js
@@ -1,4 +1,9 @@
-// @tags: [does_not_support_stepdowns, requires_non_retryable_writes, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_non_retryable_writes,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that profiled delete execution contains all expected metrics with proper values.
diff --git a/jstests/core/profile_distinct.js b/jstests/core/profile_distinct.js
index 4bfc8895f88..43ed5a2ae54 100644
--- a/jstests/core/profile_distinct.js
+++ b/jstests/core/profile_distinct.js
@@ -1,4 +1,8 @@
-// @tags: [does_not_support_stepdowns, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that profiled distinct execution contains all expected metrics with proper values.
diff --git a/jstests/core/profile_find.js b/jstests/core/profile_find.js
index 353eb5c3d70..5b6e635059b 100644
--- a/jstests/core/profile_find.js
+++ b/jstests/core/profile_find.js
@@ -1,4 +1,8 @@
-// @tags: [does_not_support_stepdowns, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that profiled find execution contains all expected metrics with proper values.
diff --git a/jstests/core/profile_findandmodify.js b/jstests/core/profile_findandmodify.js
index 99ba9b736d2..b74eb1cd284 100644
--- a/jstests/core/profile_findandmodify.js
+++ b/jstests/core/profile_findandmodify.js
@@ -1,5 +1,8 @@
// Confirms that profiled findAndModify execution contains all expected metrics with proper values.
-// @tags: [requires_profiling]
+// @tags: [
+// requires_profiling,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/profile_getmore.js b/jstests/core/profile_getmore.js
index 5cbccb95881..16858b948eb 100644
--- a/jstests/core/profile_getmore.js
+++ b/jstests/core/profile_getmore.js
@@ -1,4 +1,9 @@
-// @tags: [does_not_support_stepdowns, requires_getmore, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_getmore,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that profiled getMore execution contains all expected metrics with proper values.
diff --git a/jstests/core/profile_hide_index.js b/jstests/core/profile_hide_index.js
index 10f585ff710..b0a9dda1ed8 100644
--- a/jstests/core/profile_hide_index.js
+++ b/jstests/core/profile_hide_index.js
@@ -2,10 +2,11 @@
* Ensure the 'hidden' flag can be found in currentOp and profiler.
*
* @tags: [
- * assumes_read_concern_unchanged,
- * assumes_read_preference_unchanged,
- * requires_non_retryable_writes,
- * requires_profiling,
+ * assumes_read_concern_unchanged,
+ * assumes_read_preference_unchanged,
+ * requires_non_retryable_writes,
+ * requires_profiling,
+ * sbe_incompatible,
* ]
*/
diff --git a/jstests/core/profile_insert.js b/jstests/core/profile_insert.js
index e45b1011c89..7bc2eac7445 100644
--- a/jstests/core/profile_insert.js
+++ b/jstests/core/profile_insert.js
@@ -4,6 +4,7 @@
// assumes_write_concern_unchanged,
// does_not_support_stepdowns,
// requires_profiling,
+// sbe_incompatible,
// ]
(function() {
diff --git a/jstests/core/profile_list_collections.js b/jstests/core/profile_list_collections.js
index cf6132e71c7..49be79977a2 100644
--- a/jstests/core/profile_list_collections.js
+++ b/jstests/core/profile_list_collections.js
@@ -1,4 +1,9 @@
-// @tags: [does_not_support_stepdowns, requires_getmore, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_getmore,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that a listCollections command is not profiled.
diff --git a/jstests/core/profile_list_indexes.js b/jstests/core/profile_list_indexes.js
index b94ee6b422b..d91a0ff8348 100644
--- a/jstests/core/profile_list_indexes.js
+++ b/jstests/core/profile_list_indexes.js
@@ -1,4 +1,9 @@
-// @tags: [does_not_support_stepdowns, requires_getmore, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_getmore,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that a listIndexes command and subsequent getMores of its cursor are profiled correctly.
diff --git a/jstests/core/profile_mapreduce.js b/jstests/core/profile_mapreduce.js
index 608971f8684..7f9b581acc1 100644
--- a/jstests/core/profile_mapreduce.js
+++ b/jstests/core/profile_mapreduce.js
@@ -3,6 +3,7 @@
// does_not_support_causal_consistency,
// does_not_support_stepdowns,
// requires_profiling,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
diff --git a/jstests/core/profile_query_hash.js b/jstests/core/profile_query_hash.js
index 73e27e3bb6c..6a5484eb3bf 100644
--- a/jstests/core/profile_query_hash.js
+++ b/jstests/core/profile_query_hash.js
@@ -1,10 +1,11 @@
// Confirms that profile entries for find commands contain the appropriate query hash.
//
// @tags: [
-// does_not_support_stepdowns,
-// requires_profiling,
// assumes_against_mongod_not_mongos,
// assumes_read_concern_unchanged,
+// does_not_support_stepdowns,
+// requires_profiling,
+// sbe_incompatible,
// ]
(function() {
"use strict";
diff --git a/jstests/core/profile_sampling.js b/jstests/core/profile_sampling.js
index 802b04ad5e5..2239914cf34 100644
--- a/jstests/core/profile_sampling.js
+++ b/jstests/core/profile_sampling.js
@@ -1,5 +1,10 @@
// Confirms that the number of profiled operations is consistent with the sampleRate, if set.
-// @tags: [does_not_support_stepdowns, requires_fastcount, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_fastcount,
+// requires_profiling,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/profile_update.js b/jstests/core/profile_update.js
index 63ec6e96d76..1fc207f80de 100644
--- a/jstests/core/profile_update.js
+++ b/jstests/core/profile_update.js
@@ -1,4 +1,9 @@
-// @tags: [does_not_support_stepdowns, requires_non_retryable_writes, requires_profiling]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_non_retryable_writes,
+// requires_profiling,
+// sbe_incompatible,
+// ]
// Confirms that profiled update execution contains all expected metrics with proper values.
diff --git a/jstests/core/proj_key1.js b/jstests/core/proj_key1.js
index 06e3c255a3f..af6d6d9d9fe 100644
--- a/jstests/core/proj_key1.js
+++ b/jstests/core/proj_key1.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
t = db.proj_key1;
t.drop();
diff --git a/jstests/core/projection_dotted_paths.js b/jstests/core/projection_dotted_paths.js
index 48c2f1ae89f..18a83a8ac61 100644
--- a/jstests/core/projection_dotted_paths.js
+++ b/jstests/core/projection_dotted_paths.js
@@ -1,6 +1,9 @@
// Failing due to queries on a sharded collection not able to be covered when they aren't on the
// shard key since the document needs to be fetched in order to apply the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
/**
* Test projections with dotted field paths. Also test that such projections result in covered plans
diff --git a/jstests/core/projection_meta_index_key.js b/jstests/core/projection_meta_index_key.js
index 01f6d3c7876..cff12d31721 100644
--- a/jstests/core/projection_meta_index_key.js
+++ b/jstests/core/projection_meta_index_key.js
@@ -1,5 +1,8 @@
// Test that indexKey $meta projection works in find and aggregate commands and produces correct
// result depending on whether index key metadata is available or not.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/query_hash_stability.js b/jstests/core/query_hash_stability.js
index 4efa9b74e4e..791b17ad7c0 100644
--- a/jstests/core/query_hash_stability.js
+++ b/jstests/core/query_hash_stability.js
@@ -1,6 +1,9 @@
/**
* Test that 'queryHash' and 'planCacheKey' from explain() output have sensible values
* across catalog changes.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/queryoptimizera.js b/jstests/core/queryoptimizera.js
index f6950c81113..fa251610119 100644
--- a/jstests/core/queryoptimizera.js
+++ b/jstests/core/queryoptimizera.js
@@ -1,4 +1,8 @@
-// @tags: [does_not_support_stepdowns, requires_capped]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_capped,
+// sbe_incompatible,
+// ]
// Check that a warning message about doing a capped collection scan for a query with an _id
// constraint is printed at appropriate times. SERVER-5353
diff --git a/jstests/core/recursion.js b/jstests/core/recursion.js
index 32e4547fb75..9a05bdcf9c9 100644
--- a/jstests/core/recursion.js
+++ b/jstests/core/recursion.js
@@ -4,6 +4,7 @@
// @tags: [
// does_not_support_stepdowns,
// requires_non_retryable_commands,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
// ]
diff --git a/jstests/core/ref.js b/jstests/core/ref.js
index c893ffc3735..d89eafab7d0 100644
--- a/jstests/core/ref.js
+++ b/jstests/core/ref.js
@@ -1,5 +1,8 @@
// to run:
// ./mongo jstests/ref.js
+// @tags: [
+// sbe_incompatible,
+// ]
db.otherthings.drop();
db.things.drop();
diff --git a/jstests/core/regex.js b/jstests/core/regex.js
index f74817e618c..26a7ae33733 100644
--- a/jstests/core/regex.js
+++ b/jstests/core/regex.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
(function() {
'use strict';
diff --git a/jstests/core/regex3.js b/jstests/core/regex3.js
index 6c05ca0007f..46b18c03028 100644
--- a/jstests/core/regex3.js
+++ b/jstests/core/regex3.js
@@ -1,4 +1,7 @@
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
t = db.regex3;
t.drop();
diff --git a/jstests/core/regex4.js b/jstests/core/regex4.js
index 1abdd67d45f..4ced6d06924 100644
--- a/jstests/core/regex4.js
+++ b/jstests/core/regex4.js
@@ -1,4 +1,7 @@
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
t = db.regex4;
t.drop();
diff --git a/jstests/core/regex6.js b/jstests/core/regex6.js
index 8872d1e4cca..7af6c7d8400 100644
--- a/jstests/core/regex6.js
+++ b/jstests/core/regex6.js
@@ -1,7 +1,10 @@
// contributed by Andrew Kempe
// This test makes assertions about how many keys are examined during query execution, which can
// change depending on whether/how many documents are filtered out by the SHARDING_FILTER stage.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
t = db.regex6;
t.drop();
diff --git a/jstests/core/regex7.js b/jstests/core/regex7.js
index 90949ec3723..290cbe387a9 100644
--- a/jstests/core/regex7.js
+++ b/jstests/core/regex7.js
@@ -6,6 +6,9 @@ t.insert({r: /^a/i});
t.insert({r: /^b/});
// no index
+// @tags: [
+// sbe_incompatible,
+// ]
assert.eq(/^a/, t.findOne({r: /^a/}).r, '1 1 a');
assert.eq(1, t.count({r: /^a/}), '1 2');
assert.eq(/^a/i, t.findOne({r: /^a/i}).r, '2 1 a');
diff --git a/jstests/core/regex8.js b/jstests/core/regex8.js
index 3b731c11edd..c92e82e4aa6 100644
--- a/jstests/core/regex8.js
+++ b/jstests/core/regex8.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.regex8;
t.drop();
diff --git a/jstests/core/regex_embed1.js b/jstests/core/regex_embed1.js
index 6a47a7919ed..baaa8937962 100644
--- a/jstests/core/regex_embed1.js
+++ b/jstests/core/regex_embed1.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.regex_embed1;
t.drop();
diff --git a/jstests/core/regexc.js b/jstests/core/regexc.js
index 43ad7fd860c..d7df4f7d574 100644
--- a/jstests/core/regexc.js
+++ b/jstests/core/regexc.js
@@ -1,4 +1,7 @@
// Multiple regular expressions using the same index
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.jstests_regexc;
diff --git a/jstests/core/remove9.js b/jstests/core/remove9.js
index c18468641e0..dc3f84a9c34 100644
--- a/jstests/core/remove9.js
+++ b/jstests/core/remove9.js
@@ -1,6 +1,7 @@
// @tags: [
// requires_getmore,
// requires_non_retryable_writes,
+// sbe_incompatible,
// uses_multiple_connections,
// uses_parallel_shell,
// ]
diff --git a/jstests/core/rename4.js b/jstests/core/rename4.js
index 6b42bc8373e..1ce3b30f177 100644
--- a/jstests/core/rename4.js
+++ b/jstests/core/rename4.js
@@ -1,5 +1,6 @@
// @tags: [
// requires_non_retryable_commands,
+// sbe_incompatible,
// ]
t = db.jstests_rename4;
diff --git a/jstests/core/rename_change_target_type.js b/jstests/core/rename_change_target_type.js
index a88759b0b65..4f210b72e67 100644
--- a/jstests/core/rename_change_target_type.js
+++ b/jstests/core/rename_change_target_type.js
@@ -1,5 +1,8 @@
// Test that a rename that overwrites its destination with an equivalent value of a different type
// updates the type of the destination (SERVER-32109).
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/return_key.js b/jstests/core/return_key.js
index ef4d32497dd..9d30477bd54 100644
--- a/jstests/core/return_key.js
+++ b/jstests/core/return_key.js
@@ -3,6 +3,7 @@
// order to apply the SHARDING_FILTER stage.
// @tags: [
// assumes_unsharded_collection,
+// sbe_incompatible,
// ]
/**
diff --git a/jstests/core/rollback_index_drop.js b/jstests/core/rollback_index_drop.js
index ac97d090f83..22810cf6f93 100644
--- a/jstests/core/rollback_index_drop.js
+++ b/jstests/core/rollback_index_drop.js
@@ -6,6 +6,7 @@
// @tags: [
// assumes_unsharded_collection,
// does_not_support_stepdowns,
+// sbe_incompatible,
// ]
(function() {
"use strict";
diff --git a/jstests/core/sample_rate.js b/jstests/core/sample_rate.js
index e22b82c3bed..390606f1332 100644
--- a/jstests/core/sample_rate.js
+++ b/jstests/core/sample_rate.js
@@ -1,6 +1,9 @@
/**
* Test the $sampleRate match expression.
- * @tags: [requires_fcv_47]
+ * @tags: [
+ * requires_fcv_47,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/server14747.js b/jstests/core/server14747.js
index c6d77e6adb4..f9a650defa4 100644
--- a/jstests/core/server14747.js
+++ b/jstests/core/server14747.js
@@ -1,5 +1,8 @@
// Validation test for SERVER-14747. Note that the issue under test is a memory leak, so this
// test would only be expected to fail when run under address sanitizer.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
diff --git a/jstests/core/server14753.js b/jstests/core/server14753.js
index e8de183f2d7..8f6ef317eb3 100644
--- a/jstests/core/server14753.js
+++ b/jstests/core/server14753.js
@@ -1,5 +1,8 @@
// Validation test for SERVER-14753. Note that the issue under test is a memory leak, so this
// test would only be expected to fail when run under address sanitizer.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
diff --git a/jstests/core/server9547.js b/jstests/core/server9547.js
index 66b17644e15..515ef930b22 100644
--- a/jstests/core/server9547.js
+++ b/jstests/core/server9547.js
@@ -1,5 +1,8 @@
// SERVER-9547
// Test that sorting with .max() and .min() doesn't crash.
+// @tags: [
+// sbe_incompatible,
+// ]
var t = db.server9547;
t.drop();
diff --git a/jstests/core/show_record_id.js b/jstests/core/show_record_id.js
index b82cb5c8f55..d111858bc7d 100644
--- a/jstests/core/show_record_id.js
+++ b/jstests/core/show_record_id.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Sanity check for the showRecordId option.
diff --git a/jstests/core/single_field_hashed_index.js b/jstests/core/single_field_hashed_index.js
index 6f4fa090aea..25cc72e8747 100644
--- a/jstests/core/single_field_hashed_index.js
+++ b/jstests/core/single_field_hashed_index.js
@@ -2,7 +2,11 @@
* Tests the basic behaviours and properties of single-field hashed indexes.
* Cannot implicitly shard accessed collections because of extra shard key index in sharded
* collection.
- * @tags: [assumes_no_implicit_index_creation, requires_fastcount]
+ * @tags: [
+ * assumes_no_implicit_index_creation,
+ * requires_fastcount,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/slice1.js b/jstests/core/slice1.js
index cf454689203..37d0f25a130 100644
--- a/jstests/core/slice1.js
+++ b/jstests/core/slice1.js
@@ -7,6 +7,9 @@ t.drop();
t.insert({_id: 1, a: [0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1], b: 1, c: 1});
// first three
+// @tags: [
+// sbe_incompatible,
+// ]
let out = t.findOne({}, {a: {$slice: 3}});
assert.eq(out.a, [0, 1, 2], '1');
diff --git a/jstests/core/sort1.js b/jstests/core/sort1.js
index 7d5c227d8b4..39c8d3d333d 100644
--- a/jstests/core/sort1.js
+++ b/jstests/core/sort1.js
@@ -1,3 +1,8 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
(function() {
'use strict';
diff --git a/jstests/core/sort2.js b/jstests/core/sort2.js
index 2cfb6baafc3..ca2d3dc80bf 100644
--- a/jstests/core/sort2.js
+++ b/jstests/core/sort2.js
@@ -1,4 +1,7 @@
// test sorting, mainly a test ver simple with no index
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.sort2;
diff --git a/jstests/core/sort5.js b/jstests/core/sort5.js
index 05fe781ae32..2f604225d7a 100644
--- a/jstests/core/sort5.js
+++ b/jstests/core/sort5.js
@@ -7,6 +7,9 @@ t.save({_id: 2, x: 3, y: {a: 2, b: 3}});
t.save({_id: 9, x: 4, y: {a: 9, b: 3}});
// test compound sorting
+// @tags: [
+// sbe_incompatible,
+// ]
assert.eq([4, 2, 3, 1],
t.find().sort({"y.b": 1, "y.a": -1}).map(function(z) {
diff --git a/jstests/core/sort6.js b/jstests/core/sort6.js
index 03a1b559831..51e3a793d5f 100644
--- a/jstests/core/sort6.js
+++ b/jstests/core/sort6.js
@@ -1,4 +1,9 @@
+/**
+ * @tags: [
+ * sbe_incompatible,
+ * ]
+ */
t = db.sort6;
function get(x) {
diff --git a/jstests/core/sort8.js b/jstests/core/sort8.js
index 72e5ce54d23..75d393445a7 100644
--- a/jstests/core/sort8.js
+++ b/jstests/core/sort8.js
@@ -1,4 +1,7 @@
// Check sorting of arrays indexed by key SERVER-2884
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_sort8;
t.drop();
diff --git a/jstests/core/sort9.js b/jstests/core/sort9.js
index 57496b40da1..1cc514e970c 100644
--- a/jstests/core/sort9.js
+++ b/jstests/core/sort9.js
@@ -1,4 +1,7 @@
// Unindexed array sorting SERVER-2884
+// @tags: [
+// sbe_incompatible,
+// ]
t = db.jstests_sort9;
t.drop();
diff --git a/jstests/core/sort_array.js b/jstests/core/sort_array.js
index fccfe744a71..3b260163880 100644
--- a/jstests/core/sort_array.js
+++ b/jstests/core/sort_array.js
@@ -1,6 +1,7 @@
// @tags: [
// does_not_support_stepdowns,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
/**
diff --git a/jstests/core/sort_with_meta_operator.js b/jstests/core/sort_with_meta_operator.js
index 4208db3e212..30f17b8f84a 100644
--- a/jstests/core/sort_with_meta_operator.js
+++ b/jstests/core/sort_with_meta_operator.js
@@ -1,4 +1,7 @@
// Tests to validate the input for sort on '$meta' operator.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
const coll = db.sort_with_meta_operator;
diff --git a/jstests/core/sorta.js b/jstests/core/sorta.js
index fd7f8422187..a3155c355ce 100644
--- a/jstests/core/sorta.js
+++ b/jstests/core/sorta.js
@@ -1,4 +1,7 @@
// SERVER-2905 sorting with missing fields
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
'use strict';
diff --git a/jstests/core/sortb.js b/jstests/core/sortb.js
index 34fb94951e9..bd02c21d1f9 100644
--- a/jstests/core/sortb.js
+++ b/jstests/core/sortb.js
@@ -1,5 +1,8 @@
// Test that the in memory sort capacity limit is checked for all "top N" sort candidates.
// SERVER-4716
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/sortc.js b/jstests/core/sortc.js
index 975b3acf764..804664ab6ed 100644
--- a/jstests/core/sortc.js
+++ b/jstests/core/sortc.js
@@ -1,4 +1,7 @@
// Test sorting with skipping and multiple candidate query plans.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/sortd.js b/jstests/core/sortd.js
index 832d73d1939..87c0453cd7a 100644
--- a/jstests/core/sortd.js
+++ b/jstests/core/sortd.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test sorting with dups and multiple candidate query plans.
diff --git a/jstests/core/sortf.js b/jstests/core/sortf.js
index 4af92cddbae..6f34d80a59d 100644
--- a/jstests/core/sortf.js
+++ b/jstests/core/sortf.js
@@ -1,4 +1,7 @@
-// @tags: [requires_getmore]
+// @tags: [
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Unsorted plan on {a:1}, sorted plan on {b:1}. The unsorted plan exhausts its memory limit before
// the sorted plan is chosen by the query optimizer.
diff --git a/jstests/core/sortg.js b/jstests/core/sortg.js
index 1f5a442fa35..64edbce53d0 100644
--- a/jstests/core/sortg.js
+++ b/jstests/core/sortg.js
@@ -1,6 +1,10 @@
// Cannot implicitly shard accessed collections because of extra shard key index in sharded
// collection.
-// @tags: [assumes_no_implicit_index_creation, requires_getmore]
+// @tags: [
+// assumes_no_implicit_index_creation,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test that a memory exception is triggered for in memory sorts, but not for indexed sorts.
(function() {
diff --git a/jstests/core/sorth.js b/jstests/core/sorth.js
index c096f265882..4b5aa02c281 100644
--- a/jstests/core/sorth.js
+++ b/jstests/core/sorth.js
@@ -1,4 +1,7 @@
// Tests for the $in/sort/limit optimization combined with inequality bounds. SERVER-5777
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/sortj.js b/jstests/core/sortj.js
index 27420d70646..58125c2c00c 100644
--- a/jstests/core/sortj.js
+++ b/jstests/core/sortj.js
@@ -1,5 +1,8 @@
// Test an in memory sort memory assertion after a plan has "taken over" in the query optimizer
// cursor.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/sortk.js b/jstests/core/sortk.js
index c8219d4ea1e..e207c8f1f78 100644
--- a/jstests/core/sortk.js
+++ b/jstests/core/sortk.js
@@ -2,11 +2,11 @@
// SERVER-5063 and SERVER-1205.
// @tags: [
-// requires_non_retryable_writes,
-//
-// # Uses $where operator
-// requires_scripting,
-// assumes_balancer_off
+// assumes_balancer_off,
+// requires_non_retryable_writes,
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.jstests_sortk;
diff --git a/jstests/core/sortl.js b/jstests/core/sortl.js
index 23c2673b135..7993c1e1220 100644
--- a/jstests/core/sortl.js
+++ b/jstests/core/sortl.js
@@ -1,5 +1,8 @@
// Tests equality query on _id with a sort, intended to be tested on both mongos and mongod. For
// SERVER-20641.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
'use strict';
diff --git a/jstests/core/sparse_index_supports_ne_null.js b/jstests/core/sparse_index_supports_ne_null.js
index 590bacc5021..0575418c757 100644
--- a/jstests/core/sparse_index_supports_ne_null.js
+++ b/jstests/core/sparse_index_supports_ne_null.js
@@ -1,11 +1,14 @@
-/*
+/**
* Test that sparse indexes can be used for {$ne: null} queries. Includes tests for (sparse)
* compound indexes and for cases when {$ne: null} is within an $elemMatch.
*
* Cannot run on a sharded collection because different shards may have different plans available
* depending on how the collection is sharded. (For example, if one shard's index goes multikey,
* but another's is still not multikey, they may need to use different plans for certain queries).
- * @tags: [assumes_unsharded_collection]
+ * @tags: [
+ * assumes_unsharded_collection,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/stages_and_sorted.js b/jstests/core/stages_and_sorted.js
index 97387d84064..2b523e1ded0 100644
--- a/jstests/core/stages_and_sorted.js
+++ b/jstests/core/stages_and_sorted.js
@@ -1,5 +1,6 @@
// @tags: [
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_testing_only_commands,
// ]
diff --git a/jstests/core/stages_collection_scan.js b/jstests/core/stages_collection_scan.js
index d1b6dc178f8..78167a289c2 100644
--- a/jstests/core/stages_collection_scan.js
+++ b/jstests/core/stages_collection_scan.js
@@ -1,5 +1,6 @@
// @tags: [
// does_not_support_stepdowns,
+// sbe_incompatible,
// uses_testing_only_commands,
// ]
diff --git a/jstests/core/stages_delete.js b/jstests/core/stages_delete.js
index 29145d961bb..66be760ec01 100644
--- a/jstests/core/stages_delete.js
+++ b/jstests/core/stages_delete.js
@@ -4,6 +4,7 @@
// assumes_write_concern_unchanged,
// does_not_support_stepdowns,
// requires_fastcount,
+// sbe_incompatible,
// uses_testing_only_commands,
// ]
diff --git a/jstests/core/system_js_access.js b/jstests/core/system_js_access.js
index 2ca0e182a73..9395f98c238 100644
--- a/jstests/core/system_js_access.js
+++ b/jstests/core/system_js_access.js
@@ -2,6 +2,7 @@
// @tags: [
// assumes_unsharded_collection,
// requires_non_retryable_writes,
+// sbe_incompatible,
// ]
(function() {
diff --git a/jstests/core/tailable_cursor_invalidation.js b/jstests/core/tailable_cursor_invalidation.js
index 08ff40b0bba..9f0cddb3a70 100644
--- a/jstests/core/tailable_cursor_invalidation.js
+++ b/jstests/core/tailable_cursor_invalidation.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, requires_capped]
+// @tags: [
+// requires_capped,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Tests for the behavior of tailable cursors when a collection is dropped or the cursor is
// otherwise invalidated.
diff --git a/jstests/core/tailable_getmore_batch_size.js b/jstests/core/tailable_getmore_batch_size.js
index 05bab0ba341..30745a7465f 100644
--- a/jstests/core/tailable_getmore_batch_size.js
+++ b/jstests/core/tailable_getmore_batch_size.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, requires_capped]
+// @tags: [
+// requires_capped,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Tests for the behavior of combining the tailable and awaitData options to the getMore command
// with the batchSize option.
diff --git a/jstests/core/tailable_skip_limit.js b/jstests/core/tailable_skip_limit.js
index 8d489ba9298..2eb8a63648e 100644
--- a/jstests/core/tailable_skip_limit.js
+++ b/jstests/core/tailable_skip_limit.js
@@ -1,4 +1,8 @@
-// @tags: [requires_getmore, requires_capped]
+// @tags: [
+// requires_capped,
+// requires_getmore,
+// sbe_incompatible,
+// ]
// Test that tailable cursors work correctly with skip and limit.
(function() {
diff --git a/jstests/core/text_covered_matching.js b/jstests/core/text_covered_matching.js
index 75814f04cce..ffab962ea69 100644
--- a/jstests/core/text_covered_matching.js
+++ b/jstests/core/text_covered_matching.js
@@ -7,7 +7,10 @@
// include the 'textScore' meta field, so we are adding this test to ensure that we still get the
// same covered matching behavior with and without 'textScore' in the projection.
//
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
load("jstests/libs/analyze_plan.js");
diff --git a/jstests/core/ts1.js b/jstests/core/ts1.js
index e1d937ee6c5..db243678fd6 100644
--- a/jstests/core/ts1.js
+++ b/jstests/core/ts1.js
@@ -1,7 +1,10 @@
// Tests that timestamps are inserted in increasing order. This test assumes that timestamps
// inserted within the same second will have increasing increment values, which may not be the case
// if the inserts are into a sharded collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
const t = db.ts1;
diff --git a/jstests/core/type3.js b/jstests/core/type3.js
index 1cbf5f456b4..6c2c71e2b0c 100644
--- a/jstests/core/type3.js
+++ b/jstests/core/type3.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
// Check query type bracketing SERVER-3222
diff --git a/jstests/core/type_array.js b/jstests/core/type_array.js
index cec6ff71748..b1d1f639844 100644
--- a/jstests/core/type_array.js
+++ b/jstests/core/type_array.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
/**
* Tests for the array-related behavior of the $type query operator.
diff --git a/jstests/core/update6.js b/jstests/core/update6.js
index efbb7c365e8..644855c6742 100644
--- a/jstests/core/update6.js
+++ b/jstests/core/update6.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because of following errmsg: A single
// update/delete on a sharded collection must contain an exact match on _id or contain the shard
// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
t = db.update6;
t.drop();
diff --git a/jstests/core/update_affects_indexes.js b/jstests/core/update_affects_indexes.js
index 41b0cb4a016..20bbdc38d2d 100644
--- a/jstests/core/update_affects_indexes.js
+++ b/jstests/core/update_affects_indexes.js
@@ -1,5 +1,8 @@
// This is a regression test for SERVER-32048. It checks that index keys are correctly updated when
// an update modifier implicitly creates a new array element.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/update_arraymatch5.js b/jstests/core/update_arraymatch5.js
index f60f7816b99..b40814b20c6 100644
--- a/jstests/core/update_arraymatch5.js
+++ b/jstests/core/update_arraymatch5.js
@@ -1,4 +1,8 @@
-// @tags: [requires_non_retryable_writes, requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// requires_non_retryable_writes,
+// sbe_incompatible,
+// ]
t = db.update_arraymatch5;
t.drop();
diff --git a/jstests/core/update_arraymatch8.js b/jstests/core/update_arraymatch8.js
index d17b837d0ee..6340acdb2ab 100644
--- a/jstests/core/update_arraymatch8.js
+++ b/jstests/core/update_arraymatch8.js
@@ -1,7 +1,10 @@
// Cannot implicitly shard accessed collections because of following errmsg: A single
// update/delete on a sharded collection must contain an exact match on _id or contain the shard
// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+// sbe_incompatible,
+// ]
// Checking for positional array updates with either .$ or .0 at the end
// SERVER-7511
diff --git a/jstests/core/update_with_pipeline.js b/jstests/core/update_with_pipeline.js
index 4f044a19352..f977e487a11 100644
--- a/jstests/core/update_with_pipeline.js
+++ b/jstests/core/update_with_pipeline.js
@@ -4,7 +4,11 @@
* 'requires_find_command' needed to prevent this test from running with 'compatibility' write mode
* as pipeline-style update is not supported by OP_UPDATE.
*
- * @tags: [requires_find_command, requires_non_retryable_writes]
+ * @tags: [
+ * requires_find_command,
+ * requires_non_retryable_writes,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/views/dbref_projection.js b/jstests/core/views/dbref_projection.js
index 1aa828c3807..f77cf8ded3d 100644
--- a/jstests/core/views/dbref_projection.js
+++ b/jstests/core/views/dbref_projection.js
@@ -4,6 +4,7 @@
* Legacy find() queries do not support views, so must use the find() command.
* @tags: [
* requires_find_command,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/views/views_aggregation.js b/jstests/core/views/views_aggregation.js
index 44e73dea033..a6efd97e661 100644
--- a/jstests/core/views/views_aggregation.js
+++ b/jstests/core/views/views_aggregation.js
@@ -6,6 +6,7 @@
* requires_find_command,
* requires_getmore,
* requires_non_retryable_commands,
+ * sbe_incompatible,
* uses_$out,
* ]
*/
diff --git a/jstests/core/views/views_all_commands.js b/jstests/core/views/views_all_commands.js
index 3784355e25c..57a702c709a 100644
--- a/jstests/core/views/views_all_commands.js
+++ b/jstests/core/views/views_all_commands.js
@@ -3,11 +3,12 @@
// does_not_support_stepdowns,
// requires_emptycapped,
// requires_fastcount,
+// requires_fcv_47,
// requires_getmore,
// requires_non_retryable_commands,
// requires_non_retryable_writes,
+// sbe_incompatible,
// uses_map_reduce_with_temp_collections,
-// requires_fcv_47,
// ]
/*
diff --git a/jstests/core/views/views_collation.js b/jstests/core/views/views_collation.js
index 13eb65c3db7..accea6dcfae 100644
--- a/jstests/core/views/views_collation.js
+++ b/jstests/core/views/views_collation.js
@@ -1,4 +1,9 @@
-// @tags: [does_not_support_stepdowns, requires_non_retryable_commands, requires_fastcount]
+// @tags: [
+// does_not_support_stepdowns,
+// requires_fastcount,
+// requires_non_retryable_commands,
+// sbe_incompatible,
+// ]
/**
* Tests the behavior of operations when interacting with a view's default collation.
diff --git a/jstests/core/views/views_count.js b/jstests/core/views/views_count.js
index fa676fe6f02..5b8777feadf 100644
--- a/jstests/core/views/views_count.js
+++ b/jstests/core/views/views_count.js
@@ -1,6 +1,9 @@
// Test the count command with views.
//
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/views/views_distinct.js b/jstests/core/views/views_distinct.js
index 0f25ac3beb1..fd9ba5830f0 100644
--- a/jstests/core/views/views_distinct.js
+++ b/jstests/core/views/views_distinct.js
@@ -1,4 +1,7 @@
// Test the distinct command with views.
+// @tags: [
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/views/views_find.js b/jstests/core/views/views_find.js
index 3ca5571784d..10d205c04a0 100644
--- a/jstests/core/views/views_find.js
+++ b/jstests/core/views/views_find.js
@@ -4,6 +4,7 @@
* @tags: [
* requires_find_command,
* requires_getmore,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/where1.js b/jstests/core/where1.js
index 87ad49d16c1..4134055a802 100644
--- a/jstests/core/where1.js
+++ b/jstests/core/where1.js
@@ -1,6 +1,7 @@
// @tags: [
-// # Uses $where operator
-// requires_scripting
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.getCollection("where1");
diff --git a/jstests/core/where2.js b/jstests/core/where2.js
index 16f378c4b5e..b80c1b8381a 100644
--- a/jstests/core/where2.js
+++ b/jstests/core/where2.js
@@ -1,6 +1,7 @@
// @tags: [
-// # Uses $where operator
-// requires_scripting
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
t = db.getCollection("where2");
diff --git a/jstests/core/where5.js b/jstests/core/where5.js
index 02530dbd71e..19d15cf2b0d 100644
--- a/jstests/core/where5.js
+++ b/jstests/core/where5.js
@@ -1,8 +1,9 @@
// Tests toString() in object constructor.
// Verifies that native functions do not expose the _native_function and _native_data properties.
// @tags: [
-// # Uses $where operator
-// requires_scripting
+// # Uses $where operator
+// requires_scripting,
+// sbe_incompatible,
// ]
var t = db.where5;
diff --git a/jstests/core/where_tolerates_js_exception.js b/jstests/core/where_tolerates_js_exception.js
index ed11b3e64a5..83039a88b4f 100644
--- a/jstests/core/where_tolerates_js_exception.js
+++ b/jstests/core/where_tolerates_js_exception.js
@@ -5,6 +5,7 @@
* @tags: [
* requires_non_retryable_commands,
* requires_scripting,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/wildcard_and_text_indexes.js b/jstests/core/wildcard_and_text_indexes.js
index 639450b174c..9f77db13a00 100644
--- a/jstests/core/wildcard_and_text_indexes.js
+++ b/jstests/core/wildcard_and_text_indexes.js
@@ -1,6 +1,9 @@
/**
* Tests that a {$**: 1} index can coexist with a {$**: 'text'} index in the same collection.
- * @tags: [assumes_balancer_off]
+ * @tags: [
+ * assumes_balancer_off,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_basic_index_bounds.js b/jstests/core/wildcard_index_basic_index_bounds.js
index a685898ead7..632b8a6b0eb 100644
--- a/jstests/core/wildcard_index_basic_index_bounds.js
+++ b/jstests/core/wildcard_index_basic_index_bounds.js
@@ -4,7 +4,11 @@
* Does not support stepdowns because the test issues getMores, which the stepdown/kill_primary
* passthroughs will reject.
*
- * @tags: [does_not_support_stepdowns, assumes_balancer_off]
+ * @tags: [
+ * assumes_balancer_off,
+ * does_not_support_stepdowns,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_cached_plans.js b/jstests/core/wildcard_index_cached_plans.js
index 9b42413955c..dd626cbe357 100644
--- a/jstests/core/wildcard_index_cached_plans.js
+++ b/jstests/core/wildcard_index_cached_plans.js
@@ -12,6 +12,7 @@
* # false when the test assumes they are true because the query has already been run many times.
* assumes_balancer_off,
* inspects_whether_plan_cache_entry_is_active,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/wildcard_index_collation.js b/jstests/core/wildcard_index_collation.js
index 1fcad1d72cb..c2ae926ab0e 100644
--- a/jstests/core/wildcard_index_collation.js
+++ b/jstests/core/wildcard_index_collation.js
@@ -5,8 +5,13 @@
* The tags below are necessary because collation requires that we use read/write commands rather
* than legacy operations. We also require that collections are unsharded, since we perform queries
* which we expect to be covered.
- * @tags: [assumes_unsharded_collection, requires_find_command, requires_non_retryable_commands,
- * requires_non_retryable_writes]
+ * @tags: [
+ * assumes_unsharded_collection,
+ * requires_find_command,
+ * requires_non_retryable_commands,
+ * requires_non_retryable_writes,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"user strict";
diff --git a/jstests/core/wildcard_index_count.js b/jstests/core/wildcard_index_count.js
index 6c9fa8f05a3..9ef64482f5d 100644
--- a/jstests/core/wildcard_index_count.js
+++ b/jstests/core/wildcard_index_count.js
@@ -4,7 +4,11 @@
// The collection cannot be sharded, since the requirement to SHARD_FILTER precludes the planner
// from generating a COUNT_SCAN plan. Further, we do not allow stepdowns, since the code responsible
// for retrying on interrupt is not prepared to handle aggregation explain.
-// @tags: [assumes_unsharded_collection, does_not_support_stepdowns]
+// @tags: [
+// assumes_unsharded_collection,
+// does_not_support_stepdowns,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_covered_queries.js b/jstests/core/wildcard_index_covered_queries.js
index 484d836ac4b..eae1a14d6cb 100644
--- a/jstests/core/wildcard_index_covered_queries.js
+++ b/jstests/core/wildcard_index_covered_queries.js
@@ -8,6 +8,7 @@
* @tags: [
* assumes_unsharded_collection,
* does_not_support_stepdowns,
+ * sbe_incompatible,
* ]
*/
(function() {
diff --git a/jstests/core/wildcard_index_distinct_scan.js b/jstests/core/wildcard_index_distinct_scan.js
index f1e0fa67f3f..6c29e0867a2 100644
--- a/jstests/core/wildcard_index_distinct_scan.js
+++ b/jstests/core/wildcard_index_distinct_scan.js
@@ -1,5 +1,8 @@
/**
* Tests that a $** index can provide a DISTINCT_SCAN or indexed solution where appropriate.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_empty_arrays.js b/jstests/core/wildcard_index_empty_arrays.js
index cfea1495a48..d2ff32441e7 100644
--- a/jstests/core/wildcard_index_empty_arrays.js
+++ b/jstests/core/wildcard_index_empty_arrays.js
@@ -1,5 +1,8 @@
/**
* Tests that wildcard indexes will correctly match for empty arrays.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_equality_to_empty_obj.js b/jstests/core/wildcard_index_equality_to_empty_obj.js
index c6801bcdcb6..a89f1a66488 100644
--- a/jstests/core/wildcard_index_equality_to_empty_obj.js
+++ b/jstests/core/wildcard_index_equality_to_empty_obj.js
@@ -1,5 +1,8 @@
/**
* Tests that a $** index can support queries which test for equality to empty nested objects.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_filter.js b/jstests/core/wildcard_index_filter.js
index fc1f1efdc6f..40fd9e2ce01 100644
--- a/jstests/core/wildcard_index_filter.js
+++ b/jstests/core/wildcard_index_filter.js
@@ -3,7 +3,10 @@
*
* Does not support stepdowns, because the stepdown/kill_primary passthroughs will reject commands
* that may return different values after a failover; in this case, 'planCacheClearFilters'.
- * @tags: [does_not_support_stepdowns]
+ * @tags: [
+ * does_not_support_stepdowns,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_hint.js b/jstests/core/wildcard_index_hint.js
index ff481a62712..8c7e0e16374 100644
--- a/jstests/core/wildcard_index_hint.js
+++ b/jstests/core/wildcard_index_hint.js
@@ -1,5 +1,8 @@
/**
* Tests that $** indexes obey hinting.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_multikey.js b/jstests/core/wildcard_index_multikey.js
index 0ca4f5aeb0e..2ef2fa6da45 100644
--- a/jstests/core/wildcard_index_multikey.js
+++ b/jstests/core/wildcard_index_multikey.js
@@ -1,6 +1,9 @@
/**
* Tests that queries using a multikey $** index, return correct results.
- * @tags: [assumes_balancer_off]
+ * @tags: [
+ * assumes_balancer_off,
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_nonblocking_sort.js b/jstests/core/wildcard_index_nonblocking_sort.js
index 7e2ab7e073f..18d5f120e16 100644
--- a/jstests/core/wildcard_index_nonblocking_sort.js
+++ b/jstests/core/wildcard_index_nonblocking_sort.js
@@ -1,4 +1,7 @@
-// @tags: [assumes_balancer_off]
+// @tags: [
+// assumes_balancer_off,
+// sbe_incompatible,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_partial_index.js b/jstests/core/wildcard_index_partial_index.js
index 7a0bd4c80ff..730c3997051 100644
--- a/jstests/core/wildcard_index_partial_index.js
+++ b/jstests/core/wildcard_index_partial_index.js
@@ -1,5 +1,8 @@
/**
* Test that $** indexes work when provided with a partial filter expression.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/wildcard_index_return_key.js b/jstests/core/wildcard_index_return_key.js
index 53f7da8c09c..6956dbce0ec 100644
--- a/jstests/core/wildcard_index_return_key.js
+++ b/jstests/core/wildcard_index_return_key.js
@@ -1,5 +1,8 @@
/**
* Tests that $** indexes works with returnKey option.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
'use strict';
diff --git a/jstests/core/wildcard_index_type.js b/jstests/core/wildcard_index_type.js
index 34831c3f320..d56cfcf8234 100644
--- a/jstests/core/wildcard_index_type.js
+++ b/jstests/core/wildcard_index_type.js
@@ -1,5 +1,8 @@
/**
* Test $** support for the $type operator.
+ * @tags: [
+ * sbe_incompatible,
+ * ]
*/
(function() {
"use strict";