Skip to content

Commit 740790d

Browse files
authored
add OR query snippets (#405)
1 parent 7a270b7 commit 740790d

File tree

2 files changed

+199
-18
lines changed

2 files changed

+199
-18
lines changed

firestore/objc/firestore-smoketest-objc/ViewController.m

Lines changed: 108 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,24 +1271,114 @@ - (void)averageAggregateQuery {
12711271
}
12721272

12731273
- (void)multiAggregateCollection {
1274-
// [START multi_aggregate_collection]
1275-
FIRQuery *query = [self.db collectionWithPath:@"cities"];
1276-
FIRAggregateQuery *aggregateQuery = [query aggregate:@[
1277-
[FIRAggregateField aggregateFieldForCount],
1278-
[FIRAggregateField aggregateFieldForSumOfField:@"population"],
1279-
[FIRAggregateField aggregateFieldForAverageOfField:@"population"]]];
1280-
[aggregateQuery aggregationWithSource:FIRAggregateSourceServer
1281-
completion:^(FIRAggregateQuerySnapshot *snapshot,
1282-
NSError *error) {
1283-
if (error != nil) {
1284-
NSLog(@"Error fetching aggregate: %@", error);
1285-
} else {
1286-
NSLog(@"Count: %@", [snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForCount]]);
1287-
NSLog(@"Sum: %@", [snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForSumOfField:@"population"]]);
1288-
NSLog(@"Avg: %@", [snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForAverageOfField:@"population"]]);
1289-
}
1290-
}];
1291-
// [END multi_aggregate_collection]
1274+
// [START multi_aggregate_collection]
1275+
FIRQuery *query = [self.db collectionWithPath:@"cities"];
1276+
FIRAggregateQuery *aggregateQuery = [query aggregate:@[
1277+
[FIRAggregateField aggregateFieldForCount],
1278+
[FIRAggregateField aggregateFieldForSumOfField:@"population"],
1279+
[FIRAggregateField aggregateFieldForAverageOfField:@"population"]]];
1280+
[aggregateQuery aggregationWithSource:FIRAggregateSourceServer
1281+
completion:^(FIRAggregateQuerySnapshot *snapshot,
1282+
NSError *error) {
1283+
if (error != nil) {
1284+
NSLog(@"Error fetching aggregate: %@", error);
1285+
} else {
1286+
NSLog(@"Count: %@", [snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForCount]]);
1287+
NSLog(@"Sum: %@", [snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForSumOfField:@"population"]]);
1288+
NSLog(@"Avg: %@", [snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForAverageOfField:@"population"]]);
1289+
}
1290+
}];
1291+
// [END multi_aggregate_collection]
1292+
}
1293+
1294+
- (void)orQuery {
1295+
// [START or_query]
1296+
FIRCollectionReference *collection = [self.db collectionWithPath:@"cities"];
1297+
FIRQuery *query = [collection queryWhereFilter:[FIRFilter andFilterWithFilters:@[
1298+
[FIRFilter filterWhereField:@"state" isEqualTo:@"CA"],
1299+
[FIRFilter orFilterWithFilters:@[
1300+
[FIRFilter filterWhereField:@"capital" isEqualTo:@YES],
1301+
[FIRFilter filterWhereField:@"population" isGreaterThanOrEqualTo:@1000000]
1302+
]]
1303+
]]];
1304+
// [END or_query]
1305+
}
1306+
1307+
- (void)orQueryDisjunctions {
1308+
FIRCollectionReference *collection = [self.db collectionWithPath:@"cities"];
1309+
1310+
// [START one_disjunction]
1311+
[collection queryWhereField:@"a" isEqualTo:@1];
1312+
// [END one_disjunction]
1313+
1314+
// [START two_disjunctions]
1315+
[collection queryWhereFilter:[FIRFilter orFilterWithFilters:@[
1316+
[FIRFilter filterWhereField:@"a" isEqualTo:@1],
1317+
[FIRFilter filterWhereField:@"b" isEqualTo:@2]
1318+
]]];
1319+
// [END two_disjunctions]
1320+
1321+
// [START four_disjunctions]
1322+
[collection queryWhereFilter:[FIRFilter orFilterWithFilters:@[
1323+
[FIRFilter andFilterWithFilters:@[
1324+
[FIRFilter filterWhereField:@"a" isEqualTo:@1],
1325+
[FIRFilter filterWhereField:@"c" isEqualTo:@3]
1326+
]],
1327+
[FIRFilter andFilterWithFilters:@[
1328+
[FIRFilter filterWhereField:@"a" isEqualTo:@1],
1329+
[FIRFilter filterWhereField:@"d" isEqualTo:@4]
1330+
]],
1331+
[FIRFilter andFilterWithFilters:@[
1332+
[FIRFilter filterWhereField:@"b" isEqualTo:@2],
1333+
[FIRFilter filterWhereField:@"c" isEqualTo:@3]
1334+
]],
1335+
[FIRFilter andFilterWithFilters:@[
1336+
[FIRFilter filterWhereField:@"b" isEqualTo:@2],
1337+
[FIRFilter filterWhereField:@"d" isEqualTo:@4]
1338+
]],
1339+
]]];
1340+
// [END four_disjunctions]
1341+
1342+
// [START four_disjunctions_compact]
1343+
[collection queryWhereFilter:[FIRFilter andFilterWithFilters:@[
1344+
[FIRFilter orFilterWithFilters:@[
1345+
[FIRFilter filterWhereField:@"a" isEqualTo:@1],
1346+
[FIRFilter filterWhereField:@"b" isEqualTo:@2]
1347+
]],
1348+
[FIRFilter orFilterWithFilters:@[
1349+
[FIRFilter filterWhereField:@"c" isEqualTo:@3],
1350+
[FIRFilter filterWhereField:@"d" isEqualTo:@4]
1351+
]]
1352+
]]];
1353+
// [END four_disjunctions_compact]
1354+
1355+
// [START 20_disjunctions]
1356+
[collection queryWhereFilter:[FIRFilter orFilterWithFilters:@[
1357+
[FIRFilter filterWhereField:@"a" in:@[@1, @2, @3, @4, @5, @6, @7, @8, @9, @10]],
1358+
[FIRFilter filterWhereField:@"b" in:@[@1, @2, @3, @4, @5, @6, @7, @8, @9, @10]]
1359+
]]];
1360+
// [END 20_disjunctions]
1361+
1362+
// [START 10_disjunctions]
1363+
[collection queryWhereFilter:[FIRFilter andFilterWithFilters:@[
1364+
[FIRFilter filterWhereField:@"a" in: @[@1, @2, @3, @4, @5]],
1365+
[FIRFilter orFilterWithFilters:@[
1366+
[FIRFilter filterWhereField:@"b" isEqualTo:@2],
1367+
[FIRFilter filterWhereField:@"c" isEqualTo:@3]
1368+
]]
1369+
]]];
1370+
// [END 10_disjunctions]
1371+
}
1372+
1373+
- (void)illegalDisjunctions {
1374+
FIRCollectionReference *collection = [self.db collectionWithPath:@"cities"];
1375+
1376+
// [START 20_disjunctions]
1377+
[collection queryWhereFilter:[FIRFilter andFilterWithFilters:@[
1378+
[FIRFilter filterWhereField:@"a" in:@[@1, @2, @3, @4, @5]],
1379+
[FIRFilter filterWhereField:@"b" in:@[@1, @2, @3, @4, @5, @6, @7, @8, @9, @10]]
1380+
]]];
1381+
// [END 20_disjunctions]
12921382
}
12931383

12941384
@end

firestore/swift/firestore-smoketest/ViewController.swift

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1352,6 +1352,97 @@ class ViewController: UIViewController {
13521352
}
13531353
// [END multi_aggregate_collection]
13541354
}
1355+
1356+
private func orQuery() {
1357+
// [START or_query]
1358+
let query = db.collection("cities").whereFilter(Filter.andFilter([
1359+
Filter.whereField("state", isEqualTo: "CA"),
1360+
Filter.orFilter([
1361+
Filter.whereField("capital", isEqualTo: true),
1362+
Filter.whereField("population", isGreaterOrEqualTo: 1000000)
1363+
])
1364+
]))
1365+
// [END or_query]
1366+
}
1367+
1368+
private func orQueryDisjunctions() {
1369+
let collection = db.collection("cities")
1370+
1371+
// [START one_disjunction]
1372+
collection.whereField("a", isEqualTo: 1)
1373+
// [END one_disjunction]
1374+
1375+
// [START two_disjunctions]
1376+
collection.whereFilter(Filter.orFilter([
1377+
Filter.whereField("a", isEqualTo: 1),
1378+
Filter.whereField("b", isEqualTo: 2)
1379+
]))
1380+
// [END two_disjunctions]
1381+
1382+
// [START four_disjunctions]
1383+
collection.whereFilter(Filter.orFilter([
1384+
Filter.andFilter([
1385+
Filter.whereField("a", isEqualTo: 1),
1386+
Filter.whereField("c", isEqualTo: 3)
1387+
]),
1388+
Filter.andFilter([
1389+
Filter.whereField("a", isEqualTo: 1),
1390+
Filter.whereField("d", isEqualTo: 4)
1391+
]),
1392+
Filter.andFilter([
1393+
Filter.whereField("b", isEqualTo: 2),
1394+
Filter.whereField("c", isEqualTo: 3)
1395+
]),
1396+
Filter.andFilter([
1397+
Filter.whereField("b", isEqualTo: 2),
1398+
Filter.whereField("d", isEqualTo: 4)
1399+
])
1400+
]))
1401+
// [END four_disjunctions]
1402+
1403+
// [START four_disjunctions_compact]
1404+
collection.whereFilter(Filter.andFilter([
1405+
Filter.orFilter([
1406+
Filter.whereField("a", isEqualTo: 1),
1407+
Filter.whereField("b", isEqualTo: 2)
1408+
]),
1409+
Filter.orFilter([
1410+
Filter.whereField("c", isEqualTo: 3),
1411+
Filter.whereField("d", isEqualTo: 4)
1412+
]),
1413+
]))
1414+
// [END four_disjunctions_compact]
1415+
1416+
// [START 20_disjunctions]
1417+
collection.whereFilter(Filter.orFilter([
1418+
Filter.whereField("a", in: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
1419+
Filter.whereField("b", in: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
1420+
]))
1421+
// [END 20_disjunctions]
1422+
1423+
// [START 10_disjunctions]
1424+
collection.whereFilter(Filter.andFilter([
1425+
Filter.whereField("a", in: [1, 2, 3, 4, 5]),
1426+
Filter.orFilter([
1427+
Filter.whereField("b", isEqualTo: 2),
1428+
Filter.whereField("c", isEqualTo: 3)
1429+
])
1430+
]))
1431+
// [END 10_disjunctions]
1432+
}
1433+
1434+
// This method crashes, so don't include it in the smoketest.
1435+
func illegalDisjunctions() {
1436+
let collection = db.collection("cities")
1437+
1438+
// [START 50_disjunctions]
1439+
collection.whereFilter(Filter.andFilter([
1440+
Filter.whereField("a", in: [1, 2, 3, 4, 5]),
1441+
Filter.whereField("b", in: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
1442+
]))
1443+
// [END 50_disjunctions]
1444+
}
1445+
13551446
}
13561447

13571448
// [START codable_struct]

0 commit comments

Comments
 (0)