public void QueryInteger() { int begin = 14; int end = 18; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Range(binName, begin, end)); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { count++; } Assert.AreEqual(5, count); } finally { rs.Close(); } }
public void QueryKey() { int begin = 2; int end = 5; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Range(binName, begin, end)); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { Key key = rs.Key; Assert.IsNotNull(key.userKey); object userkey = key.userKey.Object; Assert.IsNotNull(userkey); count++; } Assert.AreEqual(4, count); } finally { rs.Close(); } }
public void QueryString() { string filter = valuePrefix + 3; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Equal(binName, filter)); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { Record record = rs.Record; string result = record.GetString(binName); Assert.AreEqual(filter, result); count++; } Assert.AreNotEqual(0, count); } finally { rs.Close(); } }
public void QueryFilter() { string nameFilter = "Bill"; string passFilter = "hknfpkj"; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Equal(binName, nameFilter)); stmt.SetAggregateFunction(Assembly.GetExecutingAssembly(), "Aerospike.Test.Resources.filter_example.lua", "filter_example", "profile_filter", Value.Get(passFilter)); // passFilter will be applied in filter_example.lua. ResultSet rs = client.QueryAggregate(null, stmt); try { int count = 0; while (rs.Next()) { IDictionary map = (IDictionary)rs.Object; Assert.AreEqual(nameFilter, map["name"]); Assert.AreEqual(passFilter, map["password"]); count++; } Assert.AreNotEqual(0, count); } finally { rs.Close(); } }
public void aggregateUsersByTweetCountByRegion() { ResultSet rs = null; try { int min; int max; Console.WriteLine("\nEnter Min Tweet Count:"); min = int.Parse(Console.ReadLine()); Console.WriteLine("Enter Max Tweet Count:"); max = int.Parse(Console.ReadLine()); // NOTE: UDF registration has been included here for convenience and to demonstrate the syntax. // NOTE: The recommended way of registering UDFs in production env is via AQL string luaDirectory = @"..\..\udf"; LuaConfig.PackagePath = luaDirectory + @"\?.lua"; string filename = "aggregationByRegion.lua"; string path = Path.Combine(luaDirectory, filename); RegisterTask rt = client.Register(null, path, filename, Language.LUA); rt.Wait(); string[] bins = { "tweetcount", "region" }; Statement stmt = new Statement(); stmt.SetNamespace("test"); stmt.SetSetName("users"); stmt.SetIndexName("tweetcount_index"); stmt.SetBinNames(bins); stmt.SetFilters(Filter.Range("tweetcount", min, max)); Console.WriteLine("\nAggregating users with " + min + "-" + max + " tweets by region. Hang on...\n"); rs = client.QueryAggregate(null, stmt, "aggregationByRegion", "sum"); if (rs.Next()) { Dictionary<object, object> result = (Dictionary<object, object>)rs.Object; Console.WriteLine("Total Users in North: " + result["n"]); Console.WriteLine("Total Users in South: " + result["s"]); Console.WriteLine("Total Users in East: " + result["e"]); Console.WriteLine("Total Users in West: " + result["w"]); } } finally { if (rs != null) { // Close record set rs.Close(); } } }
public void QueryExecute() { int begin = 3; int end = 9; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Range(binName1, begin, end)); ExecuteTask task = client.Execute(null, stmt, "record_example", "processRecord", Value.Get(binName1), Value.Get(binName2), Value.Get(100)); task.Wait(); ValidateRecords(); }
private void RunQuery(AerospikeClient client, Arguments args, string indexName, string binName, string valuePrefix) { string filter = valuePrefix + 3; console.Info("Query for: ns={0} set={1} index={2} bin={3} filter={4}", args.ns, args.set, indexName, binName, filter); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Equal(binName, filter)); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { Key key = rs.Key; Record record = rs.Record; string result = (string)record.GetValue(binName); if (result.Equals(filter)) { console.Info("Record found: namespace={0} set={1} digest={2} bin={3} value={4}", key.ns, key.setName, ByteUtil.BytesToHexString(key.digest), binName, result); } else { console.Error("Query mismatch: Expected {0}. Received {1}.", filter, result); } count++; } if (count == 0) { console.Error("Query failed. No records returned."); } } finally { rs.Close(); } }
public void QuerySum() { int begin = 4; int end = 7; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Range(binName, begin, end)); stmt.SetAggregateFunction(Assembly.GetExecutingAssembly(), "Aerospike.Test.Resources.sum_example.lua", "sum_example", "sum_single_bin", Value.Get(binName)); ResultSet rs = client.QueryAggregate(null, stmt); try { int expected = 22; // 4 + 5 + 6 + 7 int count = 0; while (rs.Next()) { object obj = rs.Object; long sum = 0; if (obj is long) { sum = (long)rs.Object; } else { Assert.Fail("Return value not a long: " + obj); } Assert.AreEqual(expected, (int)sum); count++; } Assert.AreNotEqual(0, count); } finally { rs.Close(); } }
private void RunQuery(AerospikeClient client, Arguments args, string indexName, string binName) { int begin = 14; int end = 18; console.Info("Query for: ns={0} set={1} index={2} bin={3} >= {4} <= {5}", args.ns, args.set, indexName, binName, begin, end); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Range(binName, begin, end)); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { Key key = rs.Key; Record record = rs.Record; long result = record.GetLong(binName); console.Info("Record found: namespace={0} set={1} digest={2} bin={3} value={4}", key.ns, key.setName, ByteUtil.BytesToHexString(key.digest), binName, result); count++; } if (count != 5) { console.Error("Query count mismatch. Expected 5. Received " + count); } } finally { rs.Close(); } }
public void QueryAverage() { Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Range(binName, 0, 1000)); stmt.SetAggregateFunction(Assembly.GetExecutingAssembly(), "Aerospike.Test.Resources.average_example.lua", "average_example", "average"); ResultSet rs = client.QueryAggregate(null, stmt); try { if (rs.Next()) { object obj = rs.Object; if (obj is IDictionary) { IDictionary map = (IDictionary)obj; long sum = (long)map["sum"]; long count = (long)map["count"]; double avg = (double) sum / count; Assert.AreEqual(5.5, avg, 0.00000001); } else { Assert.Fail("Unexpected object returned: " + obj); } } else { Assert.Fail("Query Assert.Failed. No records returned."); } } finally { rs.Close(); } }
private void RunQuery(AerospikeClient client, Arguments args, string indexName, string binName) { int begin = 4; int end = 7; console.Info("Query for:ns={0} set={1} index={2} bin={3} >= {4} <= {5}", args.ns, args.set, indexName, binName, begin, end); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Range(binName, begin, end)); ResultSet rs = client.QueryAggregate(null, stmt, "sum_example", "sum_single_bin", Value.Get(binName)); try { int expected = 22; // 4 + 5 + 6 + 7 int count = 0; while (rs.Next()) { object obj = rs.Object; if (obj is long) { long sum = (long)rs.Object; if (expected == (int)sum) { console.Info("Sum matched: value=" + expected); } else { console.Error("Sum mismatch: Expected {0}. Received {1}.", expected, sum); } } else { console.Error("Unexpected return value: " + obj); continue; } count++; } if (count == 0) { console.Error("Query failed. No records returned."); } } finally { rs.Close(); } }
private void RunQuery(AerospikeClient client, Arguments args, string indexName, string binName) { string nameFilter = "Bill"; string passFilter = "hknfpkj"; console.Info("Query for: ns=%s set=%s index=%s name=%s pass=%s", args.ns, args.set, indexName, nameFilter, passFilter); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Equal(binName, nameFilter)); stmt.SetAggregateFunction("filter_example", "profile_filter", Value.Get(passFilter)); // passFilter will be applied in filter_example.lua. ResultSet rs = client.QueryAggregate(null, stmt); try { int count = 0; while (rs.Next()) { Dictionary<object, object> map = (Dictionary<object, object>)rs.Object; Validate(map, "name", nameFilter); Validate(map, "password", passFilter); count++; } if (count == 0) { console.Error("Query failed. No records returned."); } } finally { rs.Close(); } }
private void RunQueryExecute(AerospikeClient client, Arguments args, string indexName, string binName1, string binName2) { int begin = 3; int end = 9; console.Info("For ns={0} set={1} index={2} bin={3} >= {4} <= {5}", args.ns, args.set, indexName, binName1, begin, end); console.Info("Even integers: add 100 to existing " + binName1); console.Info("Multiple of 5: delete " + binName2 + " bin"); console.Info("Multiple of 9: delete record"); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Range(binName1, begin, end)); ExecuteTask task = client.Execute(args.writePolicy, stmt, "record_example", "processRecord", Value.Get(binName1), Value.Get(binName2), Value.Get(100)); task.Wait(); }
private void ValidateRecords(AerospikeClient client, Arguments args, string indexName, string binName1, string binName2, int size) { int begin = 1; int end = size + 100; console.Info("Validate records"); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Range(binName1, begin, end)); RecordSet rs = client.Query(null, stmt); try { int[] expectedList = new int[] {1,2,3,104,5,106,7,108,-1,10}; int expectedSize = size - 1; int count = 0; while (rs.Next()) { Key key = rs.Key; Record record = rs.Record; object value1 = null; object value2 = null; record.bins.TryGetValue(binName1, out value1); record.bins.TryGetValue(binName2, out value2); console.Info("Record found: ns={0} set={1} bin1={2} value1={3} bin2={4} value2={5}", key.ns, key.setName, binName1, value1, binName2, value2); if (value1 == null) { console.Error("Data mismatch. value1 is null"); break; } long val1 = (long)value1; if (val1 == 9) { console.Error("Data mismatch. value1 " + val1 + " should not exist"); break; } if (val1 == 5) { if (value2 != null) { console.Error("Data mismatch. value2 " + value2 + " should be null"); break; } } else { long val2 = (long)value2; if (val1 != expectedList[val2 - 1]) { console.Error("Data mismatch. Expected " + expectedList[val2 - 1] + ". Received " + value1); break; } } count++; } if (count != expectedSize) { console.Error("Query count mismatch. Expected " + expectedSize + ". Received " + count); } } finally { rs.Close(); } }
/// <summary> /// Example functions not in use /// </summary> private void deleteTweets() { RecordSet rs = null; try { // Get username string username; Console.WriteLine("\nEnter username:"******"test", "users", username); Record userRecord = client.Get(null, userKey); if (userRecord != null) { WritePolicy wPolicy = new WritePolicy(); wPolicy.recordExistsAction = RecordExistsAction.UPDATE; string[] bins = { "tweet" }; Statement stmt = new Statement(); stmt.SetNamespace("test"); stmt.SetSetName("tweets"); stmt.SetIndexName("username_index"); stmt.SetBinNames(bins); stmt.SetFilters(Filter.Equal("username", username)); Console.WriteLine("\nDeleting " + username + "'s tweet(s):\n"); rs = client.Query(null, stmt); while (rs.Next()) { Record r = rs.Record; Console.WriteLine(r.GetValue("tweet")); client.Delete(null, rs.Key); } //Update tweetcount and timestamp to reflect this client.Operate(wPolicy, userKey, Operation.Put(new Bin("tweetcount", 0)), Operation.Put(new Bin("lasttweeted", 0))); rs.Close(); } else { Console.WriteLine("ERROR: User record not found!"); } } else { Console.WriteLine("ERROR: User record not found!"); } } finally { if (rs != null) { // Close record set rs.Close(); } } }
private void RunQuery(AerospikeClient client, Arguments args, string binName, string binName2, IndexCollectionType indexType) { console.Info("Query for: ns={0} set={1} bin={2} {3} within <region>", args.ns, args.set, binName, indexType.ToString()); StringBuilder rgnsb = GenerateQueryRegion(); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.GeoWithinRegion(binName, indexType, rgnsb.ToString())); RecordSet rs = client.Query(null, stmt); try { int count = 0; HashSet<string> uniques = new HashSet<string>(); while (rs.Next()) { Record record = rs.Record; string val = record.GetString(binName2); uniques.Add(val); count++; } if (count != 697) { console.Error("Query failed. {0} records expected. {1} returned.", 697, count); } else if (uniques.Count != 21) { console.Error("Query failed. {0} unique records expected. {1} unique returned.", 21, uniques.Count); } else { console.Info("query succeeded with {0} records {1} unique", count, uniques.Count); } } finally { rs.Close(); } }
public void OnSuccess(Key key) { int rows = Interlocked.Increment(ref count); if (rows == size) { int begin = 26; int end = 34; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Range(binName, begin, end)); client.Query(null, new RecordSequenceHandler(parent), stmt); } }
private void ValidateRecords() { int begin = 1; int end = size + 100; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Range(binName1, begin, end)); RecordSet rs = client.Query(null, stmt); try { int[] expectedList = new int[] {1,2,3,104,5,106,7,108,-1,10}; int expectedSize = size - 1; int count = 0; while (rs.Next()) { Record record = rs.Record; int value1 = record.GetInt(binName1); int value2 = record.GetInt(binName2); int val1 = value1; if (val1 == 9) { Assert.Fail("Data mismatch. value1 " + val1 + " should not exist"); } if (val1 == 5) { if (value2 != 0) { Assert.Fail("Data mismatch. value2 " + value2 + " should be null"); } } else if (value1 != expectedList[value2 - 1]) { Assert.Fail("Data mismatch. Expected " + expectedList[value2 - 1] + ". Received " + value1); } count++; } Assert.AreEqual(expectedSize, count); } finally { rs.Close(); } }
public static void Main(string[] args) { String ns = "test"; String set = "demo"; String host = "127.0.0.1"; int port = 3000; const int MAX_RECORDS = 1000; AerospikeClient client = new AerospikeClient(host, port); /* * Create an index on list values */ IndexTask creator = client.CreateIndex(null, ns, set, "list_value_index", "interests", IndexType.STRING, IndexCollectionType.LIST); creator.IsDone(); Console.WriteLine("created list value index"); /* * Create an index on map keys */ creator = client.CreateIndex(null, ns, set, "map_key_index", "email", IndexType.STRING, IndexCollectionType.MAPKEYS); creator.IsDone(); Console.WriteLine("created map keys index"); /* * Create an index on map keys */ creator = client.CreateIndex(null, ns, set, "map_value_index", "email", IndexType.STRING, IndexCollectionType.MAPVALUES); creator.IsDone(); Console.WriteLine("created map values index"); /* * Load some data */ String[] possibleInterests = new String[]{"cats", "dogs", "mice", "birds", "snakes", "fish", "pigs", "cows"}; String[] emailPostFix = new String[]{"@gmail.com", "@hotmail.com", "@yahoo.com"}; String[] emailType = new String[]{"home", "work", "private"}; Random rand1 = new Random(); Random rand2 = new Random(); for (int i = 0; i < MAX_RECORDS; i++){ /* * create key */ String userName = "******"+i; Key key = new Key(ns, set, userName); Bin user = new Bin("user", userName); /* * create interests */ List<String> interestList = new List<String>(); int interest_count = rand1.Next(possibleInterests.Length-1); for (int j = 0; j < interest_count; j++){ interestList.Add(possibleInterests[rand2.Next(possibleInterests.Length-1)]); } Bin interests = new Bin("interests", interestList); /* * create email addresses */ Dictionary<String, String> emailAddresses = new Dictionary<String, String>(); int email_count = rand1.Next(emailPostFix.Length-1); for (int j = 0; j < email_count; j++){ String type = emailType[rand2.Next(emailType.Length-1)]; String emailString = userName + emailPostFix[rand2.Next(emailPostFix.Length-1)]; emailAddresses.Add(type, emailString); } Bin emails = new Bin("email", emailAddresses); client.Put(null, key, user, interests, emails); } Console.WriteLine(String.Format("created {0} users", MAX_RECORDS)); /* * Query for users interested in "cats" */ Statement stmt = new Statement(); stmt.SetNamespace(ns); stmt.SetSetName(set); stmt.SetBinNames("user", "interests"); stmt.SetFilters(Filter.Contains("interests", IndexCollectionType.LIST, "cats")); RecordSet recordSet = client.Query(null, stmt); int recordCount = 0; try { while(recordSet.Next()){ Console.WriteLine(recordSet.Record); recordCount++; } } finally { recordSet.Close(); } Console.WriteLine(String.Format("Found {0} users interested in cats", recordCount)); /* * Query for users with "work" email addresses. */ stmt.SetBinNames("user", "email"); stmt.SetFilters(Filter.Contains("email", IndexCollectionType.MAPKEYS, "work")); recordSet = client.Query(null, stmt); recordCount = 0; try { while(recordSet.Next()){ Console.WriteLine(recordSet.Record); recordCount++; } } finally { recordSet.Close(); } Console.WriteLine(String.Format("Found {0} users with work email address", recordCount)); /* * Query for users with email address equal to "*****@*****.**". */ stmt.SetBinNames("user", "email"); stmt.SetFilters(Filter.Contains("email", IndexCollectionType.MAPVALUES, "*****@*****.**")); recordSet = client.Query(null, stmt); recordCount = 0; try { while(recordSet.Next()){ Console.WriteLine(recordSet.Record); recordCount++; } } finally { recordSet.Close(); } Console.WriteLine(String.Format("Found {0} users with email address of [email protected]", recordCount)); }
private void RunRadiusQuery(AerospikeClient client, Arguments args, string indexName, string binName) { double lon = -122.0; double lat = 37.5; double radius = 50000.0; console.Info("QueryRadius long=" + lon + " lat= " + lat + " radius=" + radius); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.GeoWithinRadius(binName, lon, lat, radius)); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { Key key = rs.Key; Record record = rs.Record; string result = record.GetGeoJSON(binName); console.Info("Record found: " + result); count++; } if (count != 4) { console.Error("Query count mismatch. Expected 4. Received " + count); } } finally { rs.Close(); } }
private void RunQuery(AerospikeClient client, Arguments args, string indexName, string binName) { StringBuilder rgnsb = new StringBuilder(); rgnsb.Append("{ "); rgnsb.Append(" \"type\": \"Polygon\", "); rgnsb.Append(" \"coordinates\": [ "); rgnsb.Append(" [[-122.500000, 37.000000],[-121.000000, 37.000000], "); rgnsb.Append(" [-121.000000, 38.080000],[-122.500000, 38.080000], "); rgnsb.Append(" [-122.500000, 37.000000]] "); rgnsb.Append(" ] "); rgnsb.Append(" } "); console.Info("QueryRegion: " + rgnsb); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.GeoWithinRegion(binName, rgnsb.ToString())); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { Key key = rs.Key; Record record = rs.Record; string result = record.GetGeoJSON(binName); console.Info("Record found: " + result); count++; } if (count != 6) { console.Error("Query count mismatch. Expected 6. Received " + count); } } finally { rs.Close(); } }
private void RunQuery(AerospikeClient client, Arguments args, string indexName, string binName) { console.Info("Query for:ns={0} set={1} index={2} bin={3}", args.ns, args.set, indexName, binName); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.Equal(binName, 1)); ResultSet rs = client.QueryAggregate(null, stmt, "average_example", "average"); try { if (rs.Next()) { object obj = rs.Object; if (obj is Dictionary<object,object>) { Dictionary<object, object> map = (Dictionary<object, object>)obj; object objsum = map["sum"]; object objcount = map["count"]; double sum = (double)(long)objsum; double count = (double)(long)objcount; double avg = sum / count; console.Info("Sum=" + sum + " Count=" + count + " Average=" + avg); double expected = 5.5; if (avg != expected) { console.Error("Data mismatch: Expected {0}. Received {1}.", expected, avg); } } else { console.Error("Unexpected object returned: " + obj); } } else { console.Error("Query failed. No records returned."); } } finally { rs.Close(); } }
public void QueryCollection() { string queryMapKey = mapKeyPrefix + 2; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Contains(binName, IndexCollectionType.MAPKEYS, queryMapKey)); RecordSet rs = client.Query(null, stmt); try { int count = 0; while (rs.Next()) { Record record = rs.Record; IDictionary result = (IDictionary)record.GetValue(binName); if (!result.Contains(queryMapKey)) { Assert.Fail("Query mismatch: Expected mapKey " + queryMapKey + " Received " + result); } count++; } Assert.AreNotEqual(0, count); } finally { rs.Close(); } }
public void queryTweetsByUsername() { Console.WriteLine("\n********** Query Tweets By Username **********\n"); RecordSet rs = null; try { // NOTE: Index creation has been included in here for convenience and to demonstrate the syntax. // NOTE: The recommended way of creating indexes in production env is via AQL. IndexTask task = client.CreateIndex(null, "test", "tweets", "username_index", "username", IndexType.STRING); task.Wait(); // Get username string username; Console.WriteLine("\nEnter username:"******"tweet" }; Statement stmt = new Statement (); stmt.SetNamespace ("test"); stmt.SetSetName ("tweets"); stmt.SetIndexName ("username_index"); stmt.SetBinNames (bins); stmt.SetFilters (Filter.Equal ("username", username)); Console.WriteLine ("\nHere's " + username + "'s tweet(s):\n"); rs = client.Query (null, stmt); while (rs.Next ()) { Record r = rs.Record; Console.WriteLine (r.GetValue ("tweet")); } } else { Console.WriteLine ("ERROR: User record not found!"); } } finally { if (rs != null) { // Close record set rs.Close(); } } }
public void queryUsersByTweetCount() { Console.WriteLine("\n********** Query Users By Tweet Count Range **********\n"); RecordSet rs = null; try { // NOTE: Index creation has been included in here for convenience and to demonstrate the syntax. // NOTE: The recommended way of creating indexes in production env is via AQL. IndexTask task = client.CreateIndex(null, "test", "users", "tweetcount_index", "tweetcount", IndexType.NUMERIC); task.Wait(); // Get min and max tweet counts int min; int max; Console.WriteLine("\nEnter Min Tweet Count:"); min = int.Parse(Console.ReadLine()); Console.WriteLine("Enter Max Tweet Count:"); max = int.Parse(Console.ReadLine()); string[] bins = { "username", "tweetcount" }; Statement stmt = new Statement(); stmt.SetNamespace("test"); stmt.SetSetName("users"); stmt.SetIndexName("tweetcount_index"); stmt.SetBinNames(bins); stmt.SetFilters(Filter.Range("tweetcount", min, max)); Console.WriteLine("\nList of users with " + min + "-" + max + " tweets:\n"); rs = client.Query(null, stmt); while (rs.Next()) { Record r = rs.Record; Console.WriteLine(r.GetValue("username") + " has " + r.GetValue("tweetcount") + " tweets"); } } finally { if (rs != null) { // Close record set rs.Close(); } } }
public void OnSuccess(Key key) { int rows = Interlocked.Increment(ref count); if (rows == max) { int begin = 26; int end = 34; parent.console.Info("Query for: ns=" + args.ns + " set=" + args.set + " bin=" + binName + " >= " + begin + " <= " + end); Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetBinNames(binName); stmt.SetFilters(Filter.Range(binName, begin, end)); client.Query(null, new RecordSequenceHandler(parent, binName), stmt); } }
private void RunQuery(AerospikeClient client, Arguments args, string indexName, string binName1, string binName2) { StringBuilder rgnsb = new StringBuilder(); rgnsb.Append("{ "); rgnsb.Append(" \"type\": \"Polygon\", "); rgnsb.Append(" \"coordinates\": [ "); rgnsb.Append(" [[-122.500000, 37.000000],[-121.000000, 37.000000], "); rgnsb.Append(" [-121.000000, 38.080000],[-122.500000, 38.080000], "); rgnsb.Append(" [-122.500000, 37.000000]] "); rgnsb.Append(" ] "); rgnsb.Append(" } "); console.Info("QueryRegion: " + rgnsb); string amenStr = "school"; Statement stmt = new Statement(); stmt.SetNamespace(args.ns); stmt.SetSetName(args.set); stmt.SetFilters(Filter.GeoWithinRegion(binName1, rgnsb.ToString())); stmt.SetAggregateFunction("geo_filter_example", "match_amenity", Value.Get(amenStr)); ResultSet rs = client.QueryAggregate(null, stmt); try { int count = 0; while (rs.Next()) { object result = rs.Object; console.Info("Record found: " + result); count++; } if (count != 2) { console.Error("Wrong number of schools found. %d != 2", count); } } finally { rs.Close(); } }