1818using MongoDB . Bson ;
1919using MongoDB . Driver ;
2020using MongoDB . Driver . Builders ;
21+ using MongoDB . Driver . Core ;
2122using MongoDB . Driver . Linq ;
2223using NUnit . Framework ;
2324
@@ -83,7 +84,7 @@ public void TestQueryWithProjectionHasIndexNameHint()
8384 [ Test ]
8485 public void TestQueryWithConditionHasIndexNameHint ( )
8586 {
86- var query = _collection . AsQueryable ( ) . Where ( o=> o . a == 1 && o . b == 3 ) . WithIndex ( "i" ) ;
87+ var query = _collection . AsQueryable ( ) . Where ( o => o . a == 1 && o . b == 3 ) . WithIndex ( "i" ) ;
8788 var selectQuery = ( SelectQuery ) MongoQueryTranslator . Translate ( query ) ;
8889 Assert . AreEqual ( "i" , selectQuery . IndexHint . AsString ) ;
8990 Assert . AreEqual ( "{ \" a\" : 1, \" b\" : 3 }" , selectQuery . BuildQuery ( ) . ToJson ( ) ) ;
@@ -111,7 +112,7 @@ public void TestIndexNameHintIsUsedInQuery()
111112 {
112113 var winningPlan = plan [ "queryPlanner" ] [ "winningPlan" ] . AsBsonDocument ;
113114 var stage = winningPlan [ "stage" ] . AsString ;
114- Assert . That ( stage , Is . EqualTo ( "COLLSCAN " ) ) ;
115+ Assert . That ( stage , Is . Not . EqualTo ( "IXSCAN " ) ) ;
115116 }
116117
117118 // Now check that we can force it to use our index
@@ -124,6 +125,10 @@ public void TestIndexNameHintIsUsedInQuery()
124125 else
125126 {
126127 var winningPlan = plan [ "queryPlanner" ] [ "winningPlan" ] . AsBsonDocument ;
128+ if ( winningPlan . Contains ( "shards" ) )
129+ {
130+ winningPlan = winningPlan [ "shards" ] [ 0 ] [ "winningPlan" ] . AsBsonDocument ;
131+ }
127132 var inputStage = winningPlan [ "inputStage" ] . AsBsonDocument ;
128133 var stage = inputStage [ "stage" ] . AsString ;
129134 var keyPattern = inputStage [ "keyPattern" ] . AsBsonDocument ;
@@ -192,7 +197,7 @@ public void TestIndexDocumentHintIsUsedInQuery()
192197 {
193198 var winningPlan = plan [ "queryPlanner" ] [ "winningPlan" ] . AsBsonDocument ;
194199 var stage = winningPlan [ "stage" ] . AsString ;
195- Assert . That ( stage , Is . EqualTo ( "COLLSCAN " ) ) ;
200+ Assert . That ( stage , Is . Not . EqualTo ( "IXSCAN " ) ) ;
196201 }
197202
198203 // Now check that we can force it to use our index
@@ -207,6 +212,10 @@ public void TestIndexDocumentHintIsUsedInQuery()
207212 else
208213 {
209214 var winningPlan = plan [ "queryPlanner" ] [ "winningPlan" ] . AsBsonDocument ;
215+ if ( winningPlan . Contains ( "shards" ) )
216+ {
217+ winningPlan = winningPlan [ "shards" ] [ 0 ] [ "winningPlan" ] . AsBsonDocument ;
218+ }
210219 var inputStage = winningPlan [ "inputStage" ] . AsBsonDocument ;
211220 var stage = inputStage [ "stage" ] . AsString ;
212221 var keyPattern = inputStage [ "keyPattern" ] . AsBsonDocument ;
@@ -225,13 +234,13 @@ public void TestWithIndexCannotBeBeforeDistinct()
225234 [ Test ]
226235 public void TestWithIndexCannotBeAfterDistinct ( )
227236 {
228- Assert . Throws < NotSupportedException > ( ( ) => _collection . AsQueryable ( ) . Select ( o => o . a ) . Distinct ( ) . WithIndex ( "i" ) . ToList ( ) ) ;
237+ Assert . Throws < NotSupportedException > ( ( ) => _collection . AsQueryable ( ) . Select ( o => o . a ) . Distinct ( ) . WithIndex ( "i" ) . ToList ( ) ) ;
229238 }
230239
231240 [ Test ]
232241 public void TestThereCanOnlyBeOneIndexHint ( )
233242 {
234- Assert . Throws < NotSupportedException > ( ( ) => _collection . AsQueryable ( ) . WithIndex ( "i" ) . WithIndex ( new BsonDocument ( "a" , 1 ) ) . ToList ( ) ) ;
243+ Assert . Throws < NotSupportedException > ( ( ) => _collection . AsQueryable ( ) . WithIndex ( "i" ) . WithIndex ( new BsonDocument ( "a" , 1 ) ) . ToList ( ) ) ;
235244 }
236245
237246 }
0 commit comments