@@ -102,6 +102,50 @@ public static IMongoQuery And(params IMongoQuery[] queries)
102102 return And ( ( IEnumerable < IMongoQuery > ) queries ) ;
103103 }
104104
105+ /// <summary>
106+ /// Tests that the value of the named element has all of the specified bits clear.
107+ /// </summary>
108+ /// <param name="name">The name.</param>
109+ /// <param name="bitmask">The bitmask.</param>
110+ /// <returns>An IMongoQuery.</returns>
111+ public static IMongoQuery BitsAllClear ( string name , long bitmask )
112+ {
113+ return new QueryDocument ( name , new BsonDocument ( "$bitsAllClear" , bitmask ) ) ;
114+ }
115+
116+ /// <summary>
117+ /// Tests that the value of the named element has all of the specified bits set.
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 BitsAllSet ( string name , long bitmask )
123+ {
124+ return new QueryDocument ( name , new BsonDocument ( "$bitsAllSet" , bitmask ) ) ;
125+ }
126+
127+ /// <summary>
128+ /// Tests that the value of the named element has any of the specified bits clear.
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 BitsAnyClear ( string name , long bitmask )
134+ {
135+ return new QueryDocument ( name , new BsonDocument ( "$bitsAnyClear" , bitmask ) ) ;
136+ }
137+
138+ /// <summary>
139+ /// Tests that the value of the named element has any of the specified bits set.
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 BitsAnySet ( string name , long bitmask )
145+ {
146+ return new QueryDocument ( name , new BsonDocument ( "$bitsAnySet" , bitmask ) ) ;
147+ }
148+
105149 /// <summary>
106150 /// Tests that at least one item of the named array element matches a query (see $elemMatch).
107151 /// </summary>
@@ -1072,6 +1116,50 @@ public static IMongoQuery All<TValue>(Expression<Func<TDocument, IEnumerable<TVa
10721116 return new QueryBuilder < TDocument > ( ) . All ( memberExpression , values ) ;
10731117 }
10741118
1119+ /// <summary>
1120+ /// Tests that the value of the named element has all of the specified bits clear.
1121+ /// </summary>
1122+ /// <param name="memberExpression">The member expression.</param>
1123+ /// <param name="bitmask">The bitmask.</param>
1124+ /// <returns>An IMongoQuery.</returns>
1125+ public static IMongoQuery BitsAllClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1126+ {
1127+ return new QueryBuilder < TDocument > ( ) . BitsAllClear ( memberExpression , bitmask ) ;
1128+ }
1129+
1130+ /// <summary>
1131+ /// Tests that the value of the named element has all of the specified bits set.
1132+ /// </summary>
1133+ /// <param name="memberExpression">The member expression.</param>
1134+ /// <param name="bitmask">The bitmask.</param>
1135+ /// <returns>An IMongoQuery.</returns>
1136+ public static IMongoQuery BitsAllSet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1137+ {
1138+ return new QueryBuilder < TDocument > ( ) . BitsAllSet ( memberExpression , bitmask ) ;
1139+ }
1140+
1141+ /// <summary>
1142+ /// Tests that the value of the named element has any of the specified bits clear.
1143+ /// </summary>
1144+ /// <param name="memberExpression">The member expression.</param>
1145+ /// <param name="bitmask">The bitmask.</param>
1146+ /// <returns>An IMongoQuery.</returns>
1147+ public static IMongoQuery BitsAnyClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1148+ {
1149+ return new QueryBuilder < TDocument > ( ) . BitsAnyClear ( memberExpression , bitmask ) ;
1150+ }
1151+
1152+ /// <summary>
1153+ /// Tests that the value of the named element has any of the specified bits set.
1154+ /// </summary>
1155+ /// <param name="memberExpression">The member expression.</param>
1156+ /// <param name="bitmask">The bitmask.</param>
1157+ /// <returns>An IMongoQuery.</returns>
1158+ public static IMongoQuery BitsAnySet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1159+ {
1160+ return new QueryBuilder < TDocument > ( ) . BitsAnySet ( memberExpression , bitmask ) ;
1161+ }
1162+
10751163 /// <summary>
10761164 /// Tests that at least one item of the named array element matches a query (see $elemMatch).
10771165 /// </summary>
@@ -1660,6 +1748,74 @@ public IMongoQuery And(params IMongoQuery[] queries)
16601748 return And ( ( IEnumerable < IMongoQuery > ) queries ) ;
16611749 }
16621750
1751+ /// <summary>
1752+ /// Tests that the value of the named element has all of the specified bits clear.
1753+ /// </summary>
1754+ /// <param name="memberExpression">The member expression.</param>
1755+ /// <param name="bitmask">The bitmask.</param>
1756+ /// <returns>An IMongoQuery.</returns>
1757+ public IMongoQuery BitsAllClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1758+ {
1759+ if ( memberExpression == null )
1760+ {
1761+ throw new ArgumentNullException ( "memberExpression" ) ;
1762+ }
1763+
1764+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1765+ return Query . BitsAllClear ( serializationInfo . ElementName , bitmask ) ;
1766+ }
1767+
1768+ /// <summary>
1769+ /// Tests that the value of the named element has all of the specified bits set.
1770+ /// </summary>
1771+ /// <param name="memberExpression">The member expression.</param>
1772+ /// <param name="bitmask">The bitmask.</param>
1773+ /// <returns>An IMongoQuery.</returns>
1774+ public IMongoQuery BitsAllSet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1775+ {
1776+ if ( memberExpression == null )
1777+ {
1778+ throw new ArgumentNullException ( "memberExpression" ) ;
1779+ }
1780+
1781+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1782+ return Query . BitsAllSet ( serializationInfo . ElementName , bitmask ) ;
1783+ }
1784+
1785+ /// <summary>
1786+ /// Tests that the value of the named element has any of the specified bits clear.
1787+ /// </summary>
1788+ /// <param name="memberExpression">The member expression.</param>
1789+ /// <param name="bitmask">The bitmask.</param>
1790+ /// <returns>An IMongoQuery.</returns>
1791+ public IMongoQuery BitsAnyClear ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1792+ {
1793+ if ( memberExpression == null )
1794+ {
1795+ throw new ArgumentNullException ( "memberExpression" ) ;
1796+ }
1797+
1798+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1799+ return Query . BitsAnyClear ( serializationInfo . ElementName , bitmask ) ;
1800+ }
1801+
1802+ /// <summary>
1803+ /// Tests that the value of the named element has any of the specified bits set.
1804+ /// </summary>
1805+ /// <param name="memberExpression">The member expression.</param>
1806+ /// <param name="bitmask">The bitmask.</param>
1807+ /// <returns>An IMongoQuery.</returns>
1808+ public IMongoQuery BitsAnySet ( Expression < Func < TDocument , object > > memberExpression , long bitmask )
1809+ {
1810+ if ( memberExpression == null )
1811+ {
1812+ throw new ArgumentNullException ( "memberExpression" ) ;
1813+ }
1814+
1815+ var serializationInfo = _serializationInfoHelper . GetSerializationInfo ( memberExpression ) ;
1816+ return Query . BitsAnySet ( serializationInfo . ElementName , bitmask ) ;
1817+ }
1818+
16631819 /// <summary>
16641820 /// Tests that at least one item of the named array element matches a query (see $elemMatch).
16651821 /// </summary>
0 commit comments