All Projects → aokocax → MongoDbCSharpWorkshop

aokocax / MongoDbCSharpWorkshop

Licence: other
MongoDb / C# / Workshop

Programming Languages

C#
18002 projects
CSS
56736 projects
Classic ASP
548 projects

MongoDbCSharpWorkshop

MongoDB indirme linki

https://www.mongodb.com/download-center?jmp=nav

Temel mongodb işlemleri

Terminal üzerinden

Sunucu üzerinden daha çok GUI'e sahip istemciler kullansak da terminal üzerinden de MongoDB'yi çalıştırabilirsiniz. Daha iyi anlamak adına temel terminal komutlarını sıralayalım.
Windows sunucuları üzerinde mongodb c:\programfiles\mongodb\server\3.x\bin dizininde kuruluyor.
mongod.exe dosyasını çalıştırarak serveri başlattıktan sonra mongo.exe'yi çalıştırarak terminal üzerinden mongodb komut setlerini girebilirsiniz.
  • show dbs //tüm databaseleri gösterir
  • use dbname // dbname ile belirtilen database'i kullanacağınızı belirtir
  • show collections //ilgili db içindeki tüm koleksiyonları döndürür
  • db.CollectionName.find({}) //belirtilen koleksiyondaki dokümanları listeler
  • db.CollectionName.insert({Name:"Test"}) // koleksiyona kayıt ekledik

GUI için Robomongo

https://robomongo.org/download

Sunucuya sağ tıklayıp Create Database'yi seçerek DB oluşturabilirsiniz.

DB'yi oluşturduktan sonra seçimi genişletip Collections'a sağ tıklayıp Create Collection ile Koleksiyon oluşturabilirsiniz Koleksiyon oluşturduktan sonra ilgili koleksiyona sağ tıklayıp Insert Document'i seçerek koleksiyona doküman ekleyebilirsiniz. Aynı menü üzerinden doküman silme, güncelleme ve istatisklerine de bakabilirsiniz.

Temel işlemler

1) Insert (Kayıt ekleme)

```

db.getCollection('Test').insert({ Name:"Berk", CityId:32, CreatedAt:ISODate("1986-06-15") })

//db.getSiblingDb("DBName").getCollection("colname") //... ile mevcut kullandığınız database'den farklı bir DB'de işlem yapabilirsiniz.

<h2>2) Find Metodu</h2>

<h3>a) Classical</h3>

// tüm kayıtları getirmek için db.getCollection('Test').find({})

// eşlenen kayıtları getirmek için db.getCollection('Test').find({Name:"Berk"})

// regex ile arama

db.getCollection('Test').find({Name:/e/}) // içinde e geçenler db.getCollection('Test').find({Name:/e/i}) // içinde e ve E geçenler (i) incasesensitive

<h3>b) projection</h3>

// sadece belirli fieldları göstermek için db.getCollection('Test').find({Name:/E/i},{Name:1,_id:0})

<h3>c) sort</h3>

// herhangi bir alana göre sıralama yapmak için db.getCollection('Test').find({}).sort({CreatedAt:1})

<h3>d) limit ve skip</h3>

//belirli bir sayıda kayıt çekmek için db.getCollection('Test').find({}).limit(2)

// belirli bir aralıktaki kayıtları getirmek için db.getCollection('Test').find({}).skip(2).limit(2)

<h3>e) find sırasında and ve or kullanımı </h3>

db.getCollection('Test').find({

$and:[{Name:/e/i,CityId:3}]

}).sort({created_at:-1})
<h2>3) Update</h2>

<h3>a) Standart update</h3>

// bulunan ilk kayıtı değiştir db.getCollection('Test').update({},{$set:{"CityId":0}})

<h3>b) Çoklu update</h3>

// bütün kayıtları değiştir db.getCollection('Test').update({},{$set:{"CityId":0}},{multi:true})

<h3>c) object ekleme</h3>

//belirli bir alana obje ekle

db.getCollection('Test').update({Name:"Berk"},{$set:{"Gender":"e"}},{multi:true})

<h2>4) Delete</h2>

// belirli bir dokümanı sil db.getCollection('Test').remove({Name:"Berk"})

// tüm dokümanları sil db.getCollection('Test').remove({})

<h2>5) Aggregate</h2>

//isim alanında aynı olanları grupla ve say db.getCollection('Test').runCommand('aggregate', {pipeline: [

                {$group: {_id: "$Name", counter: {$sum: 1}}},
                {$sort: {counter: -1}},
                {$limit: 10}
                ],
    allowDiskUse: true})

// match ile koşul ekle db.getCollection('albarakacomtr_FollowerTweet').runCommand('aggregate', {pipeline: [ {$match:{"Name":/e/}}, {$group: {_id: "$Name", counter: {$sum: 1}}}, {$sort: {counter: -1}}, {$limit: 10} ], allowDiskUse: true})

<h2>6) Create Index</h2>

// azalan index oluştur

db.getCollection('FollowerTweet').createIndex({created_at:-1})

<h2>7) Map Reduce</h2>

var map=function() { var textArr=this.text.split(' '); for (var i in textArr) { if (textArr[i].indexOf("@")!=-1 && textArr[i]!="@" && textArr[i].indexOf("(")==-1) { emit(textArr[i].replace(""","").toLowerCase(),1); } }

}; var reduce=function(key,value) { return Array.sum(value); }

db.getCollection('Test').mapReduce(map,reduce, { query:{$and:[{text:{$not:/RT @/}},{text:/@/},{text:{$not:/aracılığıyla/}}]}, out:accounts[i]+"_Mentions" });



<h1>C# driver</h1>

//nugetten en son offical driver'i kuruyoruz
<img src="nuget.png"/>

<h2>1) Initilaziton</h2>

MongoClient mc=new MongoClient(); //localde kurulu olan mongodb ye default port üzerinden bağlantı yapmak için MongoClient mc=new MongoClient("mongodb://1.1.1.1); //uzak sunucuda kurulu olan mongodb ye default port üzerinden bağlantı yapmak için


<h2>2) Insert BsonDocument</h2>
    MongoClient mc = new MongoClient();
    var db = mc.GetDatabase("Test");
    var col = db.GetCollection<BsonDocument>("Brand");
    var brand = new BsonDocument { { "Id", 2 }, { "Name", "test" },{"CityId",0 };
    col.InsertOne(brand);

<h2>3) Insert Poco</h2>

public class Brand { public int Id { get; set; } public string Name { get; set; } public int CityId { get; set; } } MongoClient mc = new MongoClient(); var db = mc.GetDatabase("Test"); var col = db.GetCollection("Brand"); var brand = new Brand { Id = 67, Name = "test",CityId=3 }; col.InsertOne(brand);


<h2>4) Find</h2>
        MongoClient mc = new MongoClient();
        var db = mc.GetDatabase("Test");
        var col = db.GetCollection<BsonDocument>("Brand");
        var brandBson = col.FindAsync(new BsonDocument{}).Result.FirstOrDefault();

<h2>5) Find Complex Query Building</h2>
        MongoClient mc = new MongoClient();
        var db = mc.GetDatabase("Test");
        var col = db.GetCollection<BsonDocument>("Brand");
        var filter = Builders<BsonDocument>.Filter.Eq("Id", 1);
        var f= Builders<BsonDocument>.Filter.Empty;
        if (true)
        {
        f = f & Builders<BsonDocument>.Filter.Eq("Name", "a");
        }
        var brandBson = col.FindAsync(f).Result.FirstOrDefault();

<h3>a) Projection</h3>
        MongoClient mc = new MongoClient();
        var db = mc.GetDatabase("Test");
        var col = db.GetCollection<Brand>("Brand");
        var filter = Builders<Brand>.Filter.Eq("Id", 1);
        var projection = Builders<Brand>.Projection.Include("Name");
        var brand = col.Find(filter).Project(projection)
<h3>b) Limit & Skip</h3>
        MongoClient mc = new MongoClient();
        var db = mc.GetDatabase("Test");
        var col = db.GetCollection<Brand>("Brand");
        var filter = Builders<Brand>.Filter.Eq("Id", 1);
        var projection = Builders<Brand>.Projection.Include("Name");
        var sort = Builders<Brand>.Sort.Descending("Name");
        var brand = col.Find(filter).Project(projection).Sort(sort).Skip(2).Limit(2);
<h3>c) Sort</h3>
        MongoClient mc = new MongoClient();
        var db = mc.GetDatabase("Test");
        var col = db.GetCollection<Brand>("Brand");
        var filter = Builders<Brand>.Filter.Eq("Id", 1);
        var projection = Builders<Brand>.Projection.Include("Name");
        var sort = Builders<Brand>.Sort.Descending("Name");
        var brand = col.Find(filter).Project(projection).Sort(sort);
<h2>6) Update</h2>
        MongoClient mc = new MongoClient();
        var db3 = mc.GetDatabase("Test");

        var col = db3.GetCollection<Brand>("Brand");
        var filt = Builders<Brand>.Filter.Eq("Id", 1);
        var upd = Builders<Brand>.Update.Set("Name", "Test1");
        col.UpdateManyAsync(filt, upd).Wait();
<h2>7) Delete</h2>
        MongoClient mc = new MongoClient();
        var db = mc.GetDatabase("Test");
       
        var col = db.GetCollection<Brand>("Brand");

        var filt = Builders<Brand>.Filter.Eq("Id", 1);

        col.DeleteOne(filt);
<h2>8) Aggregate</h2>
 var agbrands = new MongoClient().GetDatabase("Banks").GetCollection<BsonDocument>("albarakacomtr_FollowerTweet")
            .Aggregate().Group(
            new BsonDocument { { "_id", "$url.expanded_url" },
                { "count", new BsonDocument("$sum", 1) } }).ToListAsync().Result;









Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].