Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 20.54 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MongoDB.Bson;
  7. using MongoDB.Driver;
  8. using System.Configuration;
  9.  
  10. namespace mongoDB
  11. {
  12.     class Classes
  13.     {
  14.         public int cl { get; set; }
  15.         public string types { get; set; }
  16.         public string country { get; set; }
  17.         public int numGuns { get; set; }
  18.         public int bore { get; set; }
  19.         public int displacement { get; set; }
  20.     }
  21.     class Ships
  22.     {
  23.         public string name { get; set; }
  24.         public int cl { get; set; }
  25.         public DateTime launched { get; set; }
  26.     }
  27.     class Battles
  28.     {
  29.         public string name { get; set; }
  30.         public DateTime date { get; set; }
  31.     }
  32.     class Outcomes
  33.     {
  34.         public string ship { get; set; }
  35.         public string battle { get; set; }
  36.         public string result { get; set; }
  37.     }
  38.  
  39.  
  40.     class Program
  41.     {
  42.         static string connectionString = "mongodb://localhost";
  43.         static MongoClient client = new MongoClient(connectionString);
  44.         static IMongoDatabase database = client.GetDatabase("mongo");
  45.  
  46.  
  47.         private static async Task SaveClasses()
  48.         {
  49.             var collection = database.GetCollection<Classes>("Classes");
  50.             Classes c1 = new Classes { cl = 1, types = "bb", country = "Russia", numGuns = 100, bore = 30, displacement = 120000 };
  51.             Classes c2 = new Classes { cl = 2, types = "bb", country = "Russia", numGuns = 120, bore = 34, displacement = 140000 };
  52.             Classes c3 = new Classes { cl = 3, types = "bc", country = "Russia", numGuns = 90, bore = 34, displacement = 140000 };
  53.             Classes c4 = new Classes { cl = 1, types = "bb", country = "Germany", numGuns = 100, bore = 30, displacement = 120000 };
  54.             Classes c5 = new Classes { cl = 2, types = "bb", country = "USA", numGuns = 220, bore = 34, displacement = 130000 };
  55.             Classes c6 = new Classes { cl = 3, types = "bc", country = "USA", numGuns = 94, bore = 34, displacement = 100000 };
  56.             Classes c7 = new Classes { cl = 1, types = "bb", country = "China", numGuns = 100, bore = 20, displacement = 25000 };
  57.             Classes c8 = new Classes { cl = 2, types = "bb", country = "China", numGuns = 120, bore = 14, displacement = 121000 };
  58.             Classes c9 = new Classes { cl = 3, types = "bc", country = "England", numGuns = 90, bore = 41, displacement = 140000 };
  59.  
  60.  
  61.             await collection.InsertManyAsync(new[] { c1, c2, c3, c4, c5, c6, c7, c8, c9 });
  62.         }
  63.         private static async Task SaveShips()
  64.         {
  65.             var collection = database.GetCollection<Ships>("Ships");
  66.  
  67.             Ships s1 = new Ships { name = "ship1", cl = 1, launched = new DateTime(1941, 10, 10) };
  68.             Ships s2 = new Ships { name = "ship2", cl = 1, launched = new DateTime(1934, 03, 12) };
  69.             Ships s3 = new Ships { name = "ship3", cl = 2, launched = new DateTime(1934, 01, 01) };
  70.             Ships s4 = new Ships { name = "ship4", cl = 2, launched = new DateTime(1935, 10, 02) };
  71.             Ships s5 = new Ships { name = "ship5", cl = 3, launched = new DateTime(1941, 03, 11) };
  72.             Ships s6 = new Ships { name = "ship6", cl = 3, launched = new DateTime(1942, 10, 02) };
  73.             Ships s7 = new Ships { name = "ship7", cl = 3, launched = new DateTime(1939, 09, 11) };
  74.             Ships s8 = new Ships { name = "ship8", cl = 4, launched = new DateTime(1930, 10, 02) };
  75.             Ships s9 = new Ships { name = "ship9", cl = 5, launched = new DateTime(1933, 10, 02) };
  76.             Ships s10 = new Ships { name = "ship10", cl = 6, launched = new DateTime(1935, 05, 03) };
  77.             Ships s11 = new Ships { name = "ship11", cl = 7, launched = new DateTime(1935, 09, 11) };
  78.             Ships s12 = new Ships { name = "ship12", cl = 7, launched = new DateTime(1936, 05, 03) };
  79.             Ships s13 = new Ships { name = "ship13", cl = 8, launched = new DateTime(1938, 08, 14) };
  80.             Ships s14 = new Ships { name = "ship14", cl = 9, launched = new DateTime(1938, 09, 11) };
  81.             Ships s15 = new Ships { name = "ship15", cl = 9, launched = new DateTime(1939, 10, 02) };
  82.             Ships s16 = new Ships { name = "ship16", cl = 9, launched = new DateTime(1930, 10, 02) };
  83.  
  84.             await collection.InsertManyAsync(new[] { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16 });
  85.         }
  86.         private static async Task SaveBattles()
  87.         {
  88.             var collection = database.GetCollection<Battles>("Battles");
  89.  
  90.             Battles b1 = new Battles { name = "Какое-то", date = (new DateTime(1942, 09, 11)) };
  91.             Battles b2 = new Battles { name = "Яванское", date = (new DateTime(1942, 09, 12)) };
  92.             Battles b3 = new Battles { name = "Филиппинское", date = (new DateTime(1942, 05, 03)) };
  93.             Battles b4 = new Battles { name = "Тулон", date = (new DateTime(1942, 01, 01)) };
  94.             Battles b5 = new Battles { name = "Трудная работа", date = (new DateTime(1945, 09, 10)) };
  95.             Battles b6 = new Battles { name = "Битва за Британию", date = (new DateTime(1940, 08, 05)) };
  96.             Battles b7 = new Battles { name = "Битва за Москву", date = (new DateTime(1941, 02, 01)) };
  97.             Battles b8 = new Battles { name = "Белорусская операция", date = (new DateTime(1944, 07, 05)) };
  98.             Battles b9 = new Battles { name = "Битва под Монте,Кассино", date = (new DateTime(1944, 07, 15)) };
  99.  
  100.             await collection.InsertManyAsync(new[] { b1, b2, b3, b4, b5, b6, b7, b8, b9 });
  101.         }
  102.         private static async Task SaveOutcomes()
  103.         {
  104.             var collection = database.GetCollection<Outcomes>("Outcomes");
  105.  
  106.             Outcomes o1 = new Outcomes { ship = "ship2", battle = "Битва за Британию", result = "OK" };
  107.             Outcomes o2 = new Outcomes { ship = "ship1", battle = "Яванское", result = "ok" };
  108.             Outcomes o3 = new Outcomes { ship = "ship1", battle = "Белорусская операция", result = "sunk" };
  109.             Outcomes o4 = new Outcomes { ship = "ship3", battle = "Тулон", result = "sunk" };
  110.             Outcomes o5 = new Outcomes { ship = "ship4", battle = "Трудная работа", result = "OK" };
  111.             Outcomes o6 = new Outcomes { ship = "ship5", battle = "Филиппинское", result = "OK" };
  112.             Outcomes o7 = new Outcomes { ship = "ship5", battle = "Филиппинское", result = "OK" };
  113.             Outcomes o8 = new Outcomes { ship = "ship5", battle = "Трудная работа", result = "OK" };
  114.             Outcomes o9 = new Outcomes { ship = "ship6", battle = "Битва под Монте-Кассино", result = "sunk" };
  115.             Outcomes o10 = new Outcomes { ship = "ship7", battle = "Белорусская операция", result = "damaged" };
  116.             Outcomes o11 = new Outcomes { ship = "ship8", battle = "Белорусская операция", result = "OK" };
  117.             Outcomes o12 = new Outcomes { ship = "ship9", battle = "Тулон", result = "damaged" };
  118.             Outcomes o13 = new Outcomes { ship = "ship10", battle = "Белорусская операция", result = "sunk" };
  119.             Outcomes o14 = new Outcomes { ship = "ship11", battle = "Тулон", result = "damaged" };
  120.             Outcomes o15 = new Outcomes { ship = "ship12", battle = "Битва под Монте-Кассино", result = "sunk" };
  121.             Outcomes o16 = new Outcomes { ship = "ship13", battle = "Тулон", result = "OK" };
  122.             Outcomes o17 = new Outcomes { ship = "ship14", battle = "Битва под Монте-Кассино", result = "damaged" };
  123.             Outcomes o18 = new Outcomes { ship = "ship15", battle = "Битва под Монте-Кассино", result = "sunk" };
  124.             Outcomes o19 = new Outcomes { ship = "ship16", battle = "Тулон", result = "damaged" };
  125.             Outcomes o20 = new Outcomes { ship = "ship16", battle = "Белорусская операция", result = "sunk" };
  126.  
  127.             await collection.InsertManyAsync(new[] { o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20 });
  128.         }
  129.  
  130.         private static async Task ShowDoc(string s)
  131.         {
  132.             var collection = database.GetCollection<BsonDocument>(s);
  133.             var filter = new BsonDocument();
  134.             var document = await collection.Find(filter).ToListAsync();
  135.             foreach (var doc in document)
  136.             {
  137.                 Console.WriteLine(doc);
  138.             }
  139.         }
  140.         private static async Task UpdateDoc(string s)
  141.         {
  142.             var collection = database.GetCollection<BsonDocument>(s);
  143.             string fieldOld = "";
  144.             string fieldNew = "";
  145.             string getS = "";
  146.             string setS = "";
  147.             Console.WriteLine("fieldOld: ");
  148.             fieldOld = Console.ReadLine();
  149.             Console.WriteLine("getS: ");
  150.             getS = Console.ReadLine();
  151.             Console.WriteLine("fieldNew: ");
  152.             fieldNew = Console.ReadLine();
  153.             Console.WriteLine("setS: ");
  154.             setS = Console.ReadLine();
  155.  
  156.  
  157.             var result = await collection.UpdateOneAsync(
  158.                    new BsonDocument(fieldOld, getS),
  159.                    new BsonDocument("$set", new BsonDocument(fieldNew, setS))
  160.             );
  161.             Console.WriteLine("найдено по соответствию: {0}; обновлено: {1}", result.MatchedCount, result.ModifiedCount);
  162.         }
  163.         private static async Task DeleteDoc(string s)
  164.         {
  165.  
  166.             string str;
  167.             if (s == "Outcomes")
  168.             {
  169.                 Console.WriteLine("Delete from Outcomes, where ship = ");
  170.                 str = Console.ReadLine();
  171.                 var collection = database.GetCollection<Outcomes>(s);
  172.                 await collection.DeleteOneAsync(o => o.ship == str);
  173.             }
  174.             else if (s == "Battles")
  175.             {
  176.                 Console.WriteLine("Delete from Battles, where name = ");
  177.                 str = Console.ReadLine();
  178.                 var collection = database.GetCollection<Battles>(s);
  179.                 await collection.DeleteOneAsync(b => b.name == str);
  180.             }
  181.             else if (s == "Ships")
  182.             {
  183.                 Console.WriteLine("Delete from Ships, where name = ");
  184.                 str = Console.ReadLine();
  185.                 var collection = database.GetCollection<Ships>(s);
  186.                 await collection.DeleteOneAsync(sh => sh.name == str);
  187.             }
  188.             else if (s == "Classes")
  189.             {
  190.                 Console.WriteLine("Delete from Classes, where cl = ");
  191.                 str = Console.ReadLine();
  192.                 var collection = database.GetCollection<Classes>(s);
  193.                 await collection.DeleteOneAsync(c => c.cl == Convert.ToInt32(str));
  194.             }
  195.         }
  196.         private static async Task InsertDoc(string s)
  197.         {
  198.             if (s == "Outcomes")
  199.             {
  200.                 Console.Write("Enter ship: ");
  201.                 string shipS = Console.ReadLine();
  202.                 Console.Write("Enter battle: ");
  203.                 string battleS = Console.ReadLine();
  204.                 Console.Write("Enter result: ");
  205.                 string resultS = Console.ReadLine();
  206.                 var collection = database.GetCollection<Outcomes>(s);
  207.                 Outcomes o = new Outcomes { ship = shipS, battle = battleS, result = resultS };
  208.                 await collection.InsertOneAsync(o);
  209.             }
  210.             else if (s == "Battles")
  211.             {
  212.                 var collection = database.GetCollection<Battles>("Battles");
  213.                 Console.Write("Enter name: ");
  214.                 string nameS = Console.ReadLine();
  215.                 Console.Write("Enter date: ");
  216.                 DateTime dateS = Convert.ToDateTime(Console.ReadLine());
  217.                 Battles b = new Battles { name = nameS, date = dateS };
  218.                 await collection.InsertOneAsync(b);
  219.             }
  220.             else if (s == "Ships")
  221.             {
  222.                 var collection = database.GetCollection<Ships>("Ships");
  223.                 Console.Write("Enter name: ");
  224.                 string nameS = Console.ReadLine();
  225.                 Console.Write("Enter class: ");
  226.                 int clS = Convert.ToInt32(Console.ReadLine());
  227.                 Console.Write("Enter date launched: ");
  228.                 DateTime launchedS = Convert.ToDateTime(Console.ReadLine());
  229.                 Ships sh = new Ships { name = nameS, cl = clS, launched = launchedS };
  230.                 await collection.InsertOneAsync(sh);
  231.             }
  232.             else if (s == "Classes")
  233.             {
  234.                 var collection = database.GetCollection<Classes>("Classes");
  235.                 Console.Write("Enter class: ");
  236.                 int clS = Convert.ToInt32(Console.ReadLine());
  237.                 Console.Write("Enter type: ");
  238.                 string typesS = Console.ReadLine();
  239.                 Console.Write("Enter country: ");
  240.                 string countryS = Console.ReadLine();
  241.                 Console.Write("Enter numGuns: ");
  242.                 int numGunsS = Convert.ToInt32(Console.ReadLine());
  243.                 Console.Write("Enter bore: ");
  244.                 int boreS = Convert.ToInt32(Console.ReadLine());
  245.                 Console.Write("Enter displacement: ");
  246.                 int displacementS = Convert.ToInt32(Console.ReadLine());
  247.  
  248.                 Classes c = new Classes { cl = clS, types = typesS, country = countryS, numGuns = numGunsS, bore = boreS, displacement = displacementS };
  249.                 await collection.InsertOneAsync(c);
  250.             }
  251.         }
  252.         private static async Task FindDoc(string s)
  253.         {
  254.             Console.Write("Enter field, where will find: ");
  255.             string f = Console.ReadLine();
  256.             Console.Write("Enter search string: ");
  257.             string searchStr = Console.ReadLine();
  258.  
  259.             var collection = database.GetCollection<BsonDocument>(s);
  260.             var filter = Builders<BsonDocument>.Filter.Regex(f, new BsonRegularExpression(searchStr));
  261.             var document = await collection.Find(filter).ToListAsync();
  262.             foreach (var doc in document)
  263.             {
  264.                 Console.WriteLine(doc);
  265.             }
  266.  
  267.         }
  268.  
  269.         static void Insert()
  270.         {
  271.             int insertM = 1;
  272.             while (insertM != 0)
  273.             {
  274.                 Console.WriteLine("1: Insert Classes\n2: Insert Ships\n3: Insert Battles\n4: Insert Outcomes\n0: Exit");
  275.                 insertM = Convert.ToInt32(Console.ReadLine());
  276.                 Console.Clear();
  277.                 switch (insertM)
  278.                 {
  279.                     case 1:
  280.                         InsertDoc("Classes").GetAwaiter().GetResult();
  281.                         break;
  282.                     case 2:
  283.                         InsertDoc("Ships").GetAwaiter().GetResult();
  284.                         break;
  285.                     case 3:
  286.                         InsertDoc("Battles").GetAwaiter().GetResult();
  287.                         break;
  288.                     case 4:
  289.                         InsertDoc("Outcomes").GetAwaiter().GetResult();
  290.                         break;
  291.                     default:
  292.                         break;
  293.                 }
  294.             }
  295.         }
  296.         static void Show()
  297.         {
  298.             int findM = 1;
  299.             while (findM != 0)
  300.             {
  301.                 Console.WriteLine("1: Show Classes\n2: Show Ships\n3: Show Battles\n4: Show Outcomes\n0: Exit");
  302.                 findM = Convert.ToInt32(Console.ReadLine());
  303.                 Console.Clear();
  304.                 switch (findM)
  305.                 {
  306.                     case 1:
  307.                         ShowDoc("Classes").GetAwaiter().GetResult();
  308.                         break;
  309.                     case 2:
  310.                         ShowDoc("Ships").GetAwaiter().GetResult();
  311.                         break;
  312.                     case 3:
  313.                         ShowDoc("Battles").GetAwaiter().GetResult();
  314.                         break;
  315.                     case 4:
  316.                         ShowDoc("Outcomes").GetAwaiter().GetResult();
  317.                         break;
  318.                     default:
  319.                         break;
  320.                 }
  321.             }
  322.         }
  323.         static void Update()
  324.         {
  325.             int updateM = 1;
  326.             while (updateM != 0)
  327.             {
  328.                 Console.WriteLine("1: Update Classes\n2: Update Ships\n3: Update Battles\n4: Update Outcomes\n0: Exit");
  329.                 updateM = Convert.ToInt32(Console.ReadLine());
  330.                 Console.Clear();
  331.                 switch (updateM)
  332.                 {
  333.                     case 1:
  334.                         UpdateDoc("Classes").GetAwaiter().GetResult();
  335.                         break;
  336.                     case 2:
  337.                         UpdateDoc("Ships").GetAwaiter().GetResult();
  338.                         break;
  339.                     case 3:
  340.                         UpdateDoc("Battles").GetAwaiter().GetResult();
  341.                         break;
  342.                     case 4:
  343.                         UpdateDoc("Outcomes").GetAwaiter().GetResult();
  344.                         break;
  345.                     default:
  346.                         break;
  347.                 }
  348.             }
  349.         }
  350.         static void Delete()
  351.         {
  352.             int deleteM = 1;
  353.             while (deleteM != 0)
  354.             {
  355.                 Console.WriteLine("1: Delete Classes\n2: Delete Ships\n3: Delete Battles\n4: Delete Outcomes\n0: Exit");
  356.                 deleteM = Convert.ToInt32(Console.ReadLine());
  357.                 Console.Clear();
  358.                 switch (deleteM)
  359.                 {
  360.                     case 1:
  361.                         DeleteDoc("Classes").GetAwaiter().GetResult();
  362.                         break;
  363.                     case 2:
  364.                         DeleteDoc("Ships").GetAwaiter().GetResult();
  365.                         break;
  366.                     case 3:
  367.                         DeleteDoc("Battles").GetAwaiter().GetResult();
  368.                         break;
  369.                     case 4:
  370.                         DeleteDoc("Outcomes").GetAwaiter().GetResult();
  371.                         break;
  372.                     default:
  373.                         break;
  374.                 }
  375.             }
  376.         }
  377.         static void Find()
  378.         {
  379.             int findM = 1;
  380.             while (findM != 0)
  381.             {
  382.                 Console.WriteLine("1: Find Classes\n2: Find Ships\n3: Find Battles\n4: Find Outcomes\n0: Exit");
  383.                 findM = Convert.ToInt32(Console.ReadLine());
  384.                 Console.Clear();
  385.                 switch (findM)
  386.                 {
  387.                     case 1:
  388.                         FindDoc("Classes").GetAwaiter().GetResult();
  389.                         break;
  390.                     case 2:
  391.                         FindDoc("Ships").GetAwaiter().GetResult();
  392.                         break;
  393.                     case 3:
  394.                         FindDoc("Battles").GetAwaiter().GetResult();
  395.                         break;
  396.                     case 4:
  397.                         FindDoc("Outcomes").GetAwaiter().GetResult();
  398.                         break;
  399.                     default:
  400.                         break;
  401.                 }
  402.             }
  403.         }
  404.  
  405.         static void Main(string[] args)
  406.         {
  407.             int menu = 1;
  408.  
  409.             while (menu != 0)
  410.             {
  411.                 Console.WriteLine("1: Show \n2: Insert\n3: Update\n4: Delete\n5: Find\n0: Exit");
  412.                 menu = Convert.ToInt32(Console.ReadLine());
  413.                 Console.Clear();
  414.                 switch (menu)
  415.                 {
  416.                     case 1:
  417.                         Show();
  418.                         break;
  419.                     case 2:
  420.                         Insert();
  421.                         break;
  422.                     case 3:
  423.                         Update();
  424.                         break;
  425.                     case 4:
  426.                         Delete();
  427.                         break;
  428.                     case 5:
  429.                         Find();
  430.                         break;
  431.                     default:
  432.                         break;
  433.                 }
  434.             }
  435.         }
  436.  
  437.         //SaveOutcomes().GetAwaiter().GetResult();
  438.         //SaveBattles().GetAwaiter().GetResult();
  439.         //SaveShips().GetAwaiter().GetResult();
  440.         //SaveClasses().GetAwaiter().GetResult();
  441.     }
  442. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement