@@ -113,6 +113,50 @@ public static IMongoQuery And(params IMongoQuery[] queries)
113113 return And ( ( IEnumerable < IMongoQuery > ) queries ) ;
114114 }
115115
116+ /// <summary>
117+ /// Tests that the value of the named element has all of the specified bits clear.
118+ /// </summary>
119+ /// <param name="name">The name.</param>
120+ /// <param name="bitmask">The bitmask.</param>
121+ /// <returns>An IMongoQuery.</returns>
122+ public static IMongoQuery BitsAllClear ( string name , long bitmask )
123+ {
124+ return Query . Create ( name , new BsonDocument ( "$bitsAllClear" , bitmask ) ) ;
125+ }
126+
127+ /// <summary>
128+ /// Tests that the value of the named element has all of the specified bits set.
129+ /// </summary>
130+ /// <param name="name">The name.</param>
131+ /// <param name="bitmask">The bitmask.</param>
132+ /// <returns>An IMongoQuery.</returns>
133+ public static IMongoQuery BitsAllSet ( string name , long bitmask )
134+ {
135+ return Query . Create ( name , new BsonDocument ( "$bitsAllSet" , bitmask ) ) ;
136+ }
137+
138+ /// <summary>
139+ /// Tests that the value of the named element has any of the specified bits clear.
140+ /// </summary>
141+ /// <param name="name">The name.</param>
142+ /// <param name="bitmask">The bitmask.</param>
143+ /// <returns>An IMongoQuery.</returns>
144+ public static IMongoQuery BitsAnyClear ( string name , long bitmask )
145+ {
146+ return Query . Create ( name , new BsonDocument ( "$bitsAnyClear" , bitmask ) ) ;
147+ }
148+
149+ /// <summary>
150+ /// Tests that the value of the named element has any of the specified bits set.
151+ /// </summary>
152+ /// <param name="name">The name.</param>
153+ /// <param name="bitmask">The bitmask.</param>
154+ /// <returns>An IMongoQuery.</returns>
155+ public static IMongoQuery BitsAnySet ( string name , long bitmask )
156+ {
157+ return Query . Create ( name , new BsonDocument ( "$bitsAnySet" , bitmask ) ) ;
158+ }
159+
116160 /// <summary>
117161 /// Creates a query manually.
118162 /// </summary>
@@ -1104,6 +1148,50 @@ public static IMongoQuery All<TValue>(Expression<Func<TDocument, IEnumerable<TVa
11041148 return new QueryBuilder < TDocument > ( ) . All ( memberExpression , values ) ;
11051149 }
11061150
1151+ /// <summary>
1152+ /// Tests that the value of the named element has all of the specified bits clear.
1153+ /// </summary>
1154+ /// <param name="memberExpression">The member expression.</param>
1155+ /// <param name="bitmask">The bitmask.</param>
1156+ /// <returns>An IMongoQuery.</returns>
1157+ public static IMongoQuery BitsAllClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1158+ {
1159+ return new QueryBuilder < TDocument > ( ) . BitsAllClear ( memberExpression , bitmask ) ;
1160+ }
1161+
1162+ /// <summary>
1163+ /// Tests that the value of the named element has all of the specified bits set.
1164+ /// </summary>
1165+ /// <param name="memberExpression">The member expression.</param>
1166+ /// <param name="bitmask">The bitmask.</param>
1167+ /// <returns>An IMongoQuery.</returns>
1168+ public static IMongoQuery BitsAllSet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1169+ {
1170+ return new QueryBuilder < TDocument > ( ) . BitsAllSet ( memberExpression , bitmask ) ;
1171+ }
1172+
1173+ /// <summary>
1174+ /// Tests that the value of the named element has any of the specified bits clear.
1175+ /// </summary>
1176+ /// <param name="memberExpression">The member expression.</param>
1177+ /// <param name="bitmask">The bitmask.</param>
1178+ /// <returns>An IMongoQuery.</returns>
1179+ public static IMongoQuery BitsAnyClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1180+ {
1181+ return new QueryBuilder < TDocument > ( ) . BitsAnyClear ( memberExpression , bitmask ) ;
1182+ }
1183+
1184+ /// <summary>
1185+ /// Tests that the value of the named element has any of the specified bits set.
1186+ /// </summary>
1187+ /// <param name="memberExpression">The member expression.</param>
1188+ /// <param name="bitmask">The bitmask.</param>
1189+ /// <returns>An IMongoQuery.</returns>
1190+ public static IMongoQuery BitsAnySet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1191+ {
1192+ return new QueryBuilder < TDocument > ( ) . BitsAnySet ( memberExpression , bitmask ) ;
1193+ }
1194+
11071195 /// <summary>
11081196 /// Tests that at least one item of the named array element matches a query (see $elemMatch).
11091197 /// </summary>
@@ -1692,6 +1780,74 @@ public IMongoQuery And(params IMongoQuery[] queries)
16921780 return And ( ( IEnumerable < IMongoQuery > ) queries ) ;
16931781 }
16941782
1783+ /// <summary>
1784+ /// Tests that the value of the named element has all of the specified bits clear.
1785+ /// </summary>
1786+ /// <param name="memberExpression">The member expression.</param>
1787+ /// <param name="bitmask">The bitmask.</param>
1788+ /// <returns>An IMongoQuery.</returns>
1789+ public IMongoQuery BitsAllClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1790+ {
1791+ if ( memberExpression == null )
1792+ {
1793+ throw new ArgumentNullException ( "memberExpression" ) ;
1794+ }
1795+
1796+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1797+ return Query . BitsAllClear ( serializationInfo . ElementName , bitmask ) ;
1798+ }
1799+
1800+ /// <summary>
1801+ /// Tests that the value of the named element has all of the specified bits set.
1802+ /// </summary>
1803+ /// <param name="memberExpression">The member expression.</param>
1804+ /// <param name="bitmask">The bitmask.</param>
1805+ /// <returns>An IMongoQuery.</returns>
1806+ public IMongoQuery BitsAllSet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1807+ {
1808+ if ( memberExpression == null )
1809+ {
1810+ throw new ArgumentNullException ( "memberExpression" ) ;
1811+ }
1812+
1813+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1814+ return Query . BitsAllSet ( serializationInfo . ElementName , bitmask ) ;
1815+ }
1816+
1817+ /// <summary>
1818+ /// Tests that the value of the named element has any of the specified bits clear.
1819+ /// </summary>
1820+ /// <param name="memberExpression">The member expression.</param>
1821+ /// <param name="bitmask">The bitmask.</param>
1822+ /// <returns>An IMongoQuery.</returns>
1823+ public IMongoQuery BitsAnyClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1824+ {
1825+ if ( memberExpression == null )
1826+ {
1827+ throw new ArgumentNullException ( "memberExpression" ) ;
1828+ }
1829+
1830+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1831+ return Query . BitsAnyClear ( serializationInfo . ElementName , bitmask ) ;
1832+ }
1833+
1834+ /// <summary>
1835+ /// Tests that the value of the named element has any of the specified bits set.
1836+ /// </summary>
1837+ /// <param name="memberExpression">The member expression.</param>
1838+ /// <param name="bitmask">The bitmask.</param>
1839+ /// <returns>An IMongoQuery.</returns>
1840+ public IMongoQuery BitsAnySet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1841+ {
1842+ if ( memberExpression == null )
1843+ {
1844+ throw new ArgumentNullException ( "memberExpression" ) ;
1845+ }
1846+
1847+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1848+ return Query . BitsAnySet ( serializationInfo . ElementName , bitmask ) ;
1849+ }
1850+
16951851 /// <summary>
16961852 /// Tests that at least one item of the named array element matches a query (see $elemMatch).
16971853 /// </summary>
0 commit comments