public void IndexesTest() { // Insert BsonDocument insertor = new BsonDocument(); insertor.Add("Last Name", "Lin"); insertor.Add("First Name", "Hetiu"); insertor.Add("Address", "SYSU"); BsonDocument sInsertor = new BsonDocument(); sInsertor.Add("Phone", "10086"); sInsertor.Add("EMail", "*****@*****.**"); insertor.Add("Contact", sInsertor); ObjectId insertID = (ObjectId)coll.Insert(insertor); Assert.IsNotNull(insertID); // Create Index BsonDocument key = new BsonDocument(); key.Add("Last Name", 1); key.Add("First Name", 1); string name = "index name"; coll.CreateIndex(name, key, false, false); // Get Indexes DBCursor cursor = coll.GetIndex(name); Assert.IsNotNull(cursor); BsonDocument index = cursor.Next(); Assert.IsNotNull(index); Assert.IsTrue(index["IndexDef"].AsBsonDocument["name"].AsString.Equals("index name")); // Drop Index coll.DropIndex(name); cursor = coll.GetIndex(name); Assert.IsNotNull(cursor); index = cursor.Next(); Assert.IsNull(index); }
// create index on a given collection public static void CreateIndex(DBCollection dbc, string indexName, BsonDocument key, bool isUnique, bool isEnforced) { try { dbc.CreateIndex(indexName, key, isUnique, isEnforced); } catch (BaseException e) { Console.WriteLine("Failed to create index, ErrorType = {1}", e.ErrorType); Environment.Exit(0); } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(0); } }
public void GetQueryMetaTest() { try{ // create cl DBCollection coll2 = null; string cName2 = "testbar2"; if (cs.IsCollectionExist(cName2)) { cs.DropCollection(cName); } coll2 = cs.CreateCollection(cName2); // create index coll2.CreateIndex("ageIndex", new BsonDocument("age", -1), false, false); // prepare record Random ro = new Random(); int recordNum = 10000; List <BsonDocument> insertor = new List <BsonDocument>(); for (int i = 0; i < recordNum; i++) { BsonDocument obj = new BsonDocument(); obj.Add("Id", i); obj.Add("age", ro.Next(0, 100)); obj.Add("date", DateTime.Now.ToString()); insertor.Add(obj); } coll2.BulkInsert(insertor, 0); // TODO: // query BsonDocument subobj = new BsonDocument(); BsonDocument query = new BsonDocument(); query.Add("age", subobj); subobj.Add("$gt", 1); subobj.Add("$lt", 99); // hint BsonDocument hint = new BsonDocument(); hint.Add("", "ageIndex"); // orderBy BsonDocument orderBy = new BsonDocument(); orderBy.Add("Indexblocks", 1); // execute getQueryMeta DBCursor cursor = coll2.GetQueryMeta(query, orderBy, null, 0, -1); DBCursor datacursor = null; long count = 0; while (cursor.Next() != null) { BsonDocument temp = new BsonDocument(); temp = cursor.Current(); BsonDocument h = new BsonDocument(); if (temp.Contains("Indexblocks") && temp["Indexblocks"].IsBsonArray) { h.Add("Indexblocks", temp["Indexblocks"].AsBsonArray); } datacursor = coll2.Query(null, null, null, h, 0, -1); while (datacursor.Next() != null) { count++; } } Assert.IsTrue(recordNum == count); }catch (BaseException e) { Console.WriteLine(e.ErrorType); return; } }
public void IndexesTest() { // Insert BsonDocument insertor = new BsonDocument(); insertor.Add("Last Name", "Lin"); insertor.Add("First Name", "Hetiu"); insertor.Add("Address", "SYSU"); BsonDocument sInsertor = new BsonDocument(); sInsertor.Add("Phone", "10086"); sInsertor.Add("EMail", "*****@*****.**"); insertor.Add("Contact", sInsertor); ObjectId insertID = (ObjectId)coll.Insert(insertor); Assert.IsNotNull(insertID); // Create Index with default sort buffer size BsonDocument key = new BsonDocument(); key.Add("Last Name", 1); key.Add("First Name", 1); string name = "index_name_default"; coll.CreateIndex(name, key, false, false); // Create Index without sort buffer BsonDocument key2 = new BsonDocument(); key2.Add("Last Name2", 1); key2.Add("First Name2", 1); string name2 = "index_name_without_buffer"; coll.CreateIndex(name2, key2, true, true, 0); // Create Index with user-defined sort buffer BsonDocument key3 = new BsonDocument(); key3.Add("Last Name3", 1); key3.Add("First Name3", 1); string name3 = "index_name_with_user-defined_buffer"; coll.CreateIndex(name3, key3, true, true, 128); // Create Index, expect -6 exception BsonDocument key4 = new BsonDocument(); key3.Add("Last Name4", 1); key3.Add("First Name4", 1); string name4 = "index_name_with_error"; try { coll.CreateIndex(name4, key4, true, true, -1); Assert.IsTrue(false); } catch (BaseException e) { Assert.IsTrue(e.ErrorCode == new BaseException("SDB_INVALIDARG").ErrorCode); } // Get Indexes DBCursor cursor = coll.GetIndex(name); Assert.IsNotNull(cursor); BsonDocument index = cursor.Next(); Assert.IsNotNull(index); Assert.IsTrue(index["IndexDef"].AsBsonDocument["name"].AsString.Equals(name)); // Get Indexes DBCursor cursor2 = coll.GetIndex(name2); Assert.IsNotNull(cursor2); BsonDocument index2 = cursor2.Next(); Assert.IsNotNull(index2); Assert.IsTrue(index2["IndexDef"].AsBsonDocument["name"].AsString.Equals(name2)); // Get Indexes DBCursor cursor3 = coll.GetIndex(name3); Assert.IsNotNull(cursor3); BsonDocument index3 = cursor3.Next(); Assert.IsNotNull(index3); Assert.IsTrue(index3["IndexDef"].AsBsonDocument["name"].AsString.Equals(name3)); // Drop Index coll.DropIndex(name); cursor = coll.GetIndex(name); Assert.IsNotNull(cursor); index = cursor.Next(); Assert.IsNull(index); coll.DropIndex(name2); cursor = coll.GetIndex(name2); Assert.IsNotNull(cursor); index = cursor.Next(); Assert.IsNull(index); coll.DropIndex(name3); cursor = coll.GetIndex(name3); Assert.IsNotNull(cursor); index = cursor.Next(); Assert.IsNull(index); }