Merhaba arkadaşlar,
Yazılım dünyasında günümüzde NoSql database kavramı çok kullanılmakta ve bunlardan en bilinenlerinden biride Mongo DB olarak gözükmektedir. Kısaca size MongoDB hakkında genel bir bilgi vererek, Sql sorgularının Mongo Db içerisinde ki karşılıklarını vermek istiyorum.
MongoDb, open source olarak geliştirilmiş, yatay olarak ölçeklenebilir, hızlı bir NoSql veri tabanıdır. Verileri docuemnt(belge) olarak collectionlar içinde saklar. İndexleme oluşturulabilir ve veriler Json olarak tutulduğu için hızlı bir şekilde sorgulama yapılabilir. Büyük veri yapılarında hızlı sorgulamalar için kullanımı idealdir.
MongoDb de sorgulama şekli, klasik olarak kullanılan T-Sql sorgularından biraz farklıdır. Bu yüzden Sql sorguları ile MongoDb de bu sorguların karşılıklarını bir araya getirmeye çalıştım.
SQL |
MONGO |
Example |
SELECT | find() | db.Ornek.find() Aggregate, count ve sum gibi fonksiyonlarda kullanılabilir. |
INSERT | insertOne() | db. Ornek. insertOne({ user_id: “ea0001”, name: “Enes” , age:40}) |
UPDATE UPDATE Ornek SET name = “METE”WHERE age > 25 |
UpdateMany()
|
db.Ornek. updateMany({ age: { $gt: 25 } }, { $set: { name: “METE” } }) |
ALTER ALTER TABLE Ornek ADD join_date DATETIME,ALTER TABLE people DROP COLUMN join_date |
updateMany()
|
db.Ornek. updateMany({ }, { $set: { join_date: new Date() } }) db.people. |
CREATE | insertOne() / createCollection() | insertOne, insertMany kullanıldığında colection oluşturulur. Yada db.createCollection (“TEST”) gibi direk oluşturabilirsiniz. |
WHERE SELECT * FROM people WHERE age > 25 |
find() $ne : != $gt : > , $gte : >= $lt :< , $lte :<= |
db.Ornek. find({ age: { $gt: 25 } }) |
LIKE like “%bc%” like “bc%” like ‘%bc’ |
Rexeg sorgularını aşağıdaki tag ile beraber kullanabilirsiniz. $regex tagı |
db.Ornek. find({name:/bc/}) db.Ornek.find( {name:/^bc/}) db.Ornek.find( {name:/bc$/}) |
DELETE |
deleteOne()/deleteMany()orremove() | db.Ornek. deleteOne( {id: 11}) |
ORDER BY | sort() +1 asc, -1 desc |
db.Ornek.find(). sort( {join_date:-1}) |
GROUP BY | group() / aggregate($group) | db.Ornek. aggregate ([{ $group: { _id: “$name”}} ]) |
JOIN | Left join için $lookup | db.[collection name]. aggregation ([{$lookup:{ from: “[foreign collection]”, localField : “[local field]”, foreignField : “[foreign collection field name]”, as : “[key name to appear in result]”}}]) |
Evet arkadaşlar, aklıma gelen genel sql sorgu keywordlerini bu şekilde eşleştirdim. Umarım işinize yarar.
https://docs.mongodb.com/manual/reference/sql-aggregation-comparison/
https://www.tutorialspoint.com/mongodb/mongodb_query_document.htm
https://docs.mongodb.com/manual/reference/sql-comparison/
https://docs.mongodb.com/master/reference/operator/aggregation/lookup/#pipe._S_lookup
Hepinize iyi hafta sonları kalın sağlıcakla 😀