@@ -50,10 +50,12 @@ public void TestExplainFromLinqQueryEqualsExplainFromCursor()
50
50
var queryExplain = _collection . FindAs < C > ( Query . And ( Query . EQ ( "X" , 2 ) , Query . EQ ( "Y" , 1 ) ) ) . SetLimit ( 1 ) . Explain ( ) ;
51
51
52
52
// millis could be different, so we'll ignore that difference.
53
- linqExplain . Remove ( "millis" ) ;
54
- queryExplain . Remove ( "millis" ) ;
55
- linqExplain . Remove ( "executionTimeMillis" ) ;
56
- queryExplain . Remove ( "executionTimeMillis" ) ;
53
+ RemoveKey ( linqExplain , "millis" ) ;
54
+ RemoveKey ( queryExplain , "millis" ) ;
55
+ RemoveKey ( linqExplain , "executionTimeMillis" ) ;
56
+ RemoveKey ( queryExplain , "executionTimeMillis" ) ;
57
+ RemoveKey ( linqExplain , "executionTimeMillisEstimate" ) ;
58
+ RemoveKey ( queryExplain , "executionTimeMillisEstimate" ) ;
57
59
58
60
Assert . AreEqual ( linqExplain , queryExplain ) ;
59
61
}
@@ -65,10 +67,12 @@ public void TestVerboseExplainFromLinqQueryEqualsVerboseExplainFromCursor()
65
67
var queryExplain = _collection . FindAs < C > ( Query . And ( Query . EQ ( "X" , 2 ) , Query . EQ ( "Y" , 1 ) ) ) . SetLimit ( 1 ) . Explain ( true ) ;
66
68
67
69
// millis could be different, so we'll ignore that difference.
68
- linqExplain . Remove ( "millis" ) ;
69
- queryExplain . Remove ( "millis" ) ;
70
- linqExplain . Remove ( "executionTimeMillis" ) ;
71
- queryExplain . Remove ( "executionTimeMillis" ) ;
70
+ RemoveKey ( linqExplain , "millis" ) ;
71
+ RemoveKey ( queryExplain , "millis" ) ;
72
+ RemoveKey ( linqExplain , "executionTimeMillis" ) ;
73
+ RemoveKey ( queryExplain , "executionTimeMillis" ) ;
74
+ RemoveKey ( linqExplain , "executionTimeMillisEstimate" ) ;
75
+ RemoveKey ( queryExplain , "executionTimeMillisEstimate" ) ;
72
76
73
77
Assert . AreEqual ( linqExplain , queryExplain ) ;
74
78
}
@@ -84,5 +88,24 @@ public void TestTakeZeroQueriesCannotBeExplained()
84
88
{
85
89
Assert . Throws < NotSupportedException > ( ( ) => _collection . AsQueryable < C > ( ) . Take ( 0 ) . Explain ( ) ) ;
86
90
}
91
+
92
+ private void RemoveKey ( BsonValue value , string key )
93
+ {
94
+ if ( value . IsBsonDocument )
95
+ {
96
+ value . AsBsonDocument . Remove ( key ) ;
97
+ foreach ( var element in value . AsBsonDocument )
98
+ {
99
+ RemoveKey ( element . Value , key ) ;
100
+ }
101
+ }
102
+ else if ( value . IsBsonArray )
103
+ {
104
+ foreach ( var item in value . AsBsonArray )
105
+ {
106
+ RemoveKey ( item , key ) ;
107
+ }
108
+ }
109
+ }
87
110
}
88
111
}
0 commit comments