@@ -27,7 +27,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
27
27
await TestUtils . destroyAllDataPermanently ( false ) ;
28
28
} ) ;
29
29
30
- it_only_mongodb_version ( '<5.1>=6' ) ( 'query find with hint string' , async ( ) => {
30
+ it_only_mongodb_version ( '<5.1 || >=6 <8 ' ) ( 'query find with hint string' , async ( ) => {
31
31
const object = new TestObject ( ) ;
32
32
await object . save ( ) ;
33
33
@@ -39,7 +39,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
39
39
expect ( explain . queryPlanner . winningPlan . inputStage . indexName ) . toBe ( '_id_' ) ;
40
40
} ) ;
41
41
42
- it_only_mongodb_version ( '>=5.1<6' ) ( 'query find with hint string' , async ( ) => {
42
+ it_only_mongodb_version ( '>=5.1 <6' ) ( 'query find with hint string' , async ( ) => {
43
43
const object = new TestObject ( ) ;
44
44
await object . save ( ) ;
45
45
@@ -50,7 +50,19 @@ describe_only_db('mongo')('Parse.Query hint', () => {
50
50
expect ( explain . queryPlanner . winningPlan . queryPlan . inputStage . indexName ) . toBe ( '_id_' ) ;
51
51
} ) ;
52
52
53
- it_only_mongodb_version ( '<5.1>=6' ) ( 'query find with hint object' , async ( ) => {
53
+ it_only_mongodb_version ( '>=8' ) ( 'query find with hint string' , async ( ) => {
54
+ const object = new TestObject ( ) ;
55
+ await object . save ( ) ;
56
+
57
+ const collection = await config . database . adapter . _adaptiveCollection ( 'TestObject' ) ;
58
+ let explain = await collection . _rawFind ( { _id : object . id } , { explain : true } ) ;
59
+ expect ( explain . queryPlanner . winningPlan . stage ) . toBe ( 'EXPRESS_IXSCAN' ) ;
60
+ explain = await collection . _rawFind ( { _id : object . id } , { hint : '_id_' , explain : true } ) ;
61
+ expect ( explain . queryPlanner . winningPlan . stage ) . toBe ( 'FETCH' ) ;
62
+ expect ( explain . queryPlanner . winningPlan . inputStage . indexName ) . toBe ( '_id_' ) ;
63
+ } ) ;
64
+
65
+ it_only_mongodb_version ( '<5.1 || >=6 <8' ) ( 'query find with hint object' , async ( ) => {
54
66
const object = new TestObject ( ) ;
55
67
await object . save ( ) ;
56
68
@@ -64,7 +76,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
64
76
} ) ;
65
77
} ) ;
66
78
67
- it_only_mongodb_version ( '>=5.1<6' ) ( 'query find with hint object' , async ( ) => {
79
+ it_only_mongodb_version ( '>=5.1 <6' ) ( 'query find with hint object' , async ( ) => {
68
80
const object = new TestObject ( ) ;
69
81
await object . save ( ) ;
70
82
@@ -78,6 +90,20 @@ describe_only_db('mongo')('Parse.Query hint', () => {
78
90
expect ( explain . queryPlanner . winningPlan . queryPlan . inputStage . keyPattern ) . toEqual ( { _id : 1 } ) ;
79
91
} ) ;
80
92
93
+ it_only_mongodb_version ( '>=8' ) ( 'query find with hint object' , async ( ) => {
94
+ const object = new TestObject ( ) ;
95
+ await object . save ( ) ;
96
+
97
+ const collection = await config . database . adapter . _adaptiveCollection ( 'TestObject' ) ;
98
+ let explain = await collection . _rawFind ( { _id : object . id } , { explain : true } ) ;
99
+ expect ( explain . queryPlanner . winningPlan . stage ) . toBe ( 'EXPRESS_IXSCAN' ) ;
100
+ explain = await collection . _rawFind ( { _id : object . id } , { hint : { _id : 1 } , explain : true } ) ;
101
+ expect ( explain . queryPlanner . winningPlan . stage ) . toBe ( 'FETCH' ) ;
102
+ expect ( explain . queryPlanner . winningPlan . inputStage . keyPattern ) . toEqual ( {
103
+ _id : 1 ,
104
+ } ) ;
105
+ } ) ;
106
+
81
107
it_only_mongodb_version ( '<4.4' ) ( 'query aggregate with hint string' , async ( ) => {
82
108
const object = new TestObject ( { foo : 'bar' } ) ;
83
109
await object . save ( ) ;
@@ -100,7 +126,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
100
126
expect ( queryPlanner . winningPlan . inputStage . indexName ) . toBe ( '_id_' ) ;
101
127
} ) ;
102
128
103
- it_only_mongodb_version ( '>=4.4<5.1' ) ( 'query aggregate with hint string' , async ( ) => {
129
+ it_only_mongodb_version ( '>=4.4 <5.1' ) ( 'query aggregate with hint string' , async ( ) => {
104
130
const object = new TestObject ( { foo : 'bar' } ) ;
105
131
await object . save ( ) ;
106
132
@@ -124,7 +150,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
124
150
expect ( queryPlanner . winningPlan . inputStage . inputStage . indexName ) . toBe ( '_id_' ) ;
125
151
} ) ;
126
152
127
- it_only_mongodb_version ( '>=5.1<5.2' ) ( 'query aggregate with hint string' , async ( ) => {
153
+ it_only_mongodb_version ( '>=5.1 <5.2' ) ( 'query aggregate with hint string' , async ( ) => {
128
154
const object = new TestObject ( { foo : 'bar' } ) ;
129
155
await object . save ( ) ;
130
156
@@ -192,7 +218,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
192
218
expect ( queryPlanner . winningPlan . inputStage . keyPattern ) . toEqual ( { _id : 1 } ) ;
193
219
} ) ;
194
220
195
- it_only_mongodb_version ( '>=4.4<5.1' ) ( 'query aggregate with hint object' , async ( ) => {
221
+ it_only_mongodb_version ( '>=4.4 <5.1' ) ( 'query aggregate with hint object' , async ( ) => {
196
222
const object = new TestObject ( { foo : 'bar' } ) ;
197
223
await object . save ( ) ;
198
224
@@ -217,7 +243,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
217
243
expect ( queryPlanner . winningPlan . inputStage . inputStage . keyPattern ) . toEqual ( { _id : 1 } ) ;
218
244
} ) ;
219
245
220
- it_only_mongodb_version ( '>=5.1<5.2' ) ( 'query aggregate with hint object' , async ( ) => {
246
+ it_only_mongodb_version ( '>=5.1 <5.2' ) ( 'query aggregate with hint object' , async ( ) => {
221
247
const object = new TestObject ( { foo : 'bar' } ) ;
222
248
await object . save ( ) ;
223
249
@@ -267,7 +293,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
267
293
expect ( queryPlanner . winningPlan . queryPlan . inputStage . inputStage . keyPattern ) . toEqual ( { _id : 1 } ) ;
268
294
} ) ;
269
295
270
- it_only_mongodb_version ( '<5.1>=6' ) ( 'query find with hint (rest)' , async ( ) => {
296
+ it_only_mongodb_version ( '<5.1 || >=6' ) ( 'query find with hint (rest)' , async ( ) => {
271
297
const object = new TestObject ( ) ;
272
298
await object . save ( ) ;
273
299
let options = Object . assign ( { } , masterKeyOptions , {
@@ -292,7 +318,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
292
318
expect ( explain . queryPlanner . winningPlan . inputStage . inputStage . indexName ) . toBe ( '_id_' ) ;
293
319
} ) ;
294
320
295
- it_only_mongodb_version ( '>=5.1<6' ) ( 'query find with hint (rest)' , async ( ) => {
321
+ it_only_mongodb_version ( '>=5.1 <6' ) ( 'query find with hint (rest)' , async ( ) => {
296
322
const object = new TestObject ( ) ;
297
323
await object . save ( ) ;
298
324
let options = Object . assign ( { } , masterKeyOptions , {
@@ -344,7 +370,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
344
370
expect ( queryPlanner . winningPlan . inputStage . keyPattern ) . toEqual ( { _id : 1 } ) ;
345
371
} ) ;
346
372
347
- it_only_mongodb_version ( '>=4.4<5.1' ) ( 'query aggregate with hint (rest)' , async ( ) => {
373
+ it_only_mongodb_version ( '>=4.4 <5.1' ) ( 'query aggregate with hint (rest)' , async ( ) => {
348
374
const object = new TestObject ( { foo : 'bar' } ) ;
349
375
await object . save ( ) ;
350
376
let options = Object . assign ( { } , masterKeyOptions , {
@@ -377,7 +403,7 @@ describe_only_db('mongo')('Parse.Query hint', () => {
377
403
expect ( queryPlanner . winningPlan . inputStage . inputStage . keyPattern ) . toEqual ( { _id : 1 } ) ;
378
404
} ) ;
379
405
380
- it_only_mongodb_version ( '>=5.1<5.2' ) ( 'query aggregate with hint (rest)' , async ( ) => {
406
+ it_only_mongodb_version ( '>=5.1 <5.2' ) ( 'query aggregate with hint (rest)' , async ( ) => {
381
407
const object = new TestObject ( { foo : 'bar' } ) ;
382
408
await object . save ( ) ;
383
409
let options = Object . assign ( { } , masterKeyOptions , {
0 commit comments