SlideShare a Scribd company logo
MongoDB
MongoDB NoSQL Database
Cihan Özhan | DeepLab.co | Founder, AI Engineer, Mentor
MongoDB Nedir?
• MongoDB bir döküman veritabanıdır.
• NoSQL veritabanları ile girişte görüldüğü gibi, satırların(veya MongoDB'de dökümanlar) önceden
tanımlanmış şemaya sahip olmasına gerek yoktur.
• MongoDB'de bulunan veri modeli, hiyerarşik ilişkileri temsil etmenize, dizileri depolamanıza ve diğer
daha karmaşık yapıları daha kolay bir şekilde göstermenize olanak tanır.
• MongoDB ortamları oldukça ölçeklenebilir.
MongoDB Geçmişi
• MongoDB, 2007 yılında Eliot Horowitz ve Dwight Merriman tarafından geliştirildi.
• Dwight Merriman'a göre bu veritabanı adı, büyük miktarda veriyi işleme fikrini desteklemek için
humongous kelimesinden türetildi.
• 2009 yılında MongoDB açık kaynaklı bir proje olarak yapılırken, şirket ticari destek hizmetleri
sunmuştur.
– Pek çok şirket, şaşırtıcı birçok özelliği için MongoDB'yi kullanmaya başladı.
• New York Times gazetesi, fotoğrafları göndermek için web tabanlı bir uygulama oluşturmak için
MongoDB'yi kullandı.
• MongoDB'nin ilk hazır üretimi, Mart 2010'da piyasaya sürülen 1.4 sürümünden düşünüldü.
• 2013 yılında şirket resmi olarak MongoDB Inc.'e seçildi.
• Bundan sonra MongoDB 2.4.9, 10 Ocak 2014'te yayınlandı.
• MongoDB 4.0.3, mevcut en son ve kararlı sürümdür.
MongoDB'de Genel Terimler
• _id
– The _id field represents a unique value in the MongoDB document. The _id fields is like the document's primary key.
• collection
– Bu, MongoDB dökümanlarından oluşan bir gruptur.
• cursor
– Bu, bir sorgunun sonuç kümesine bir göstericidir.
• database
– Bu, koleksiyonlar için bir kaptır. Her veritabanı, dosya sisteminde kendi dosya kümesini alır.
• document
– MongoDB koleksiyonundaki bir kayda temelde belge denir.
• field
– Bir belgedeki ad-değer çiftidir.
MongoDB Kullanan Kuruluşlar
• MongoDB'yi iş uygulamalarının çoğu için veritabanı olarak kullanan bazı büyük ve önemli kuruluşlar
aşağıdadır:
– LinkedIn
– eBay
– SAP
– Adobe
– McAfee
– FourSquare
– MetLife
MongoDB'nin Özellikleri
• Ad-Hoc Sorgu Desteği
• Aggregation
• Yüksek Performans
• Yatay Ölçeklenebilirlik (Horizontal Scalability)
• Geniş Media Desteği
• Yük Dengeleme (Load Balancing)
• Replication
• Index
• GridFS
• MapReduce
• Auto-Sharding
MongoDB'nin Avantajları
• Open Source
• Parçalama (Sharding)
• Daha Hızlı İşlem(Process)
• Schemaless
• Document-Based
• No SQL Injection
MongoDB vs. MySQL
MongoDB MySQL
Birçok alternatif veri modeli İlişkisel veritabanı yönetim sistemi
Schemaless Schema
Atomikliği destekler Transactional Relational Data Store
JSON query SQL
Server-Side Scripting Stored Procedures Implemented
Yüksek Ölçekli Ölçeklenebilir Değil
Daha Hızlı Daha Yavaş
MongoDB vs. Cassandra
Cassandra MongoDB
Cassandra, yüksek performanslı dağıtılmış
veritabanı sistemidir.
MongoDB, platformlar arası döküman odaklı
veritabanı sistemidir.
Cassandra Java ile yazılmıştır. MongoDB, C++ ile yazılmıştır
Cassandra, verileri SQL biçimi gibi tablo
biçiminde depolar.
MongoDB, verileri JSON biçiminde depolar.
Cassandra Apache lisansına sahiptir. MongoDB, AGPL lisansına ve Apache
driver’larına sahiptir.
Cassandra temelde büyük miktarda veriyi
işlemek için tasarlanmıştır.
MongoDB, JSON benzeri dökümanlarla başa
çıkmak ve uygulamalara daha kolay ve daha
hızlı erişmek için tasarlanmıştır.
Cassandra, tek bir hata noktası olmadan
yüksek kullanılabilirlik sağlar.
MongoDB'nin başarısızlık durumunda
yönetilmesi kolaydır.
MongoDB CouchDB
Document-Based modeli takip ederse ve
veriler JSON formatında sunulur.
Document-oriented modeli takip ederse ve
veriler JSON formatında sunulur.
Binary protokol ve TCP/IP üzerinden özel
protokol kullanır.
HTTP/REST tabanlı arayüz kullanır. Çok
sezgiseldir ve çok iyi tasarlanmıştır.
Veritabanı koleksiyonları ve koleksiyon
dökümanları içerir.
CouchDB'de veritabanı dökümanları içerir.
MongoDB, collection + object-based sorgu dili
oluşturarak Map/Reduce(JavaScript)'i izler.
Map/Reduce sorgu yöntemini izler. (JavaScript
+ Diğerleri)
master-slave replication’ı destekler. Custom conflict resolution function’lar ile
master-master çoğaltmayı destekler.
Yerinde güncelleme MVVC’yi takip eder.(Multi Version Concurrency
Control)
MongoDB tutarlılığı destekler. Availability’I destekler.
MongoDB son derece tutarlıdır. CouchDB tutarlıdır.
C++ ile geliştirildi. Erlang dilinde yazıldı.
MongoDB vs. CouchDB
MongoDB Redis
Document-store yapısını takip eden en popüler
NoSQL veritabanlarından biridir.
Veritabanı, önbellek ve mesaj aracısı olarak
kullanılan bellek içi veri yapısı deposudur.
Document-store modelini takip eder. Redis, key-value store modelini takip eder.
MongoDB Inc. tarafından geliştirilmiştir. Salvatore Sanfilippo tarafından geliştirildi.
Ücretsiz ve açık kaynaklıdır. Subscription-based ve açık kaynaklıdır.
C++ ile geliştirildi. Redis, C dilinde yazılmış ve uygulanmıştır.
Sunucu işletim sistemleri Linux, OS X, Solaris,
Windows'dur.
Sunucu işletim sistemleri BSD, Linux, OS X,
Windows'dur.
İkincil index içerir. İkincil index desteklemez.
JSON kullan. Proprietary Protocol’ü takip eder. Proprietary Protocol’ü takip eder.
Sunucu Tarafı komut dosyası JavaScript'tir Redis'teki Sunucu Tarafı komut dosyası Lua’dır.
MapReduce var. MapReduce'a sahip değil
MongoDB vs. Redis
MongoDB Redis
Nihai Tutarlılık Eventual Consistency ve Immediate Consistency
Kullanıcılar ve roller için erişim hakları. Basit password-based erişim kontrolü
Yeni nesil veritabanı olarak kabul ediliyor. Dünyanın en hızlı veritabanı olarak
derecelendirilmiştir.
MongoDB, günümüz uygulamalarının
gerektirdiği esneklik, ölçek ve performansın
yanı sıra geleneksel veritabanlarının en
iyisini sağlar.
Redis, bir bellek içi veritabanı platformudur;
strings, hashes, sets, lists, sorted sets, bitmaps,
hyperloglogs ve geospatial index gibi çok çeşitli
veri yapıları için destek sağlar.
30 milyon indirme(her gün binlerce indirme
ile artıyor). Fortune 100'ün üçte birinden
fazlası dahil 3.000'den fazla müşteri.
Redis Labs, dünya çapında 60000'den fazla
müşteriden oluşur ve NoSQL, bellek içi ve
operasyonel veritabanları hakkındaki en iyi analist
raporlarında tutarlı bir şekilde lider olarak sıralanır.
MongoDB vs. Redis
MongoDB Neden Kullanılmalı?
• Document-Oriented
• Ad-Hoc Queries
• Indexing
• Replication
• Load Balancing
• Flexibility
– MongoDB'deki veriler esnek bir şemaya sahiptir. Koleksiyonlar belge yapısını zorlamaz.
– Bu esneklik, uygulamanıza ve performans gereksinimlerine uygun veri modelleme seçenekleri
sunar.
• Scalability
– Verilerin boyutu arttıkça, tek bir makine verileri depolamak veya kabul edilebilir bir okuma ve
yazma verimi sağlamak için yeterli olmayabilir.
– Sharding, sorunu yatay ölçeklemeyle çözer. Sharding, veri büyümesinin taleplerini karşılamak
için MongoDB'nin izlediği yaklaşımdır.
• Performance
– MongoDB, MySQL'den 2 ila 10 kat ve CouchDB'den 50 kat daha hızlıdır.
MongoDB Ne Zaman Kullanılmalı?
• Veri Ekleme Tutarlılığı
• Data Corruption Recovery (Veri Kurtarma)
• Load Balancing
• JOIN’lerden Kaçınmak İçin
• Şema Değişiklikleri İçin En Uygun Yol
• İlişkisel Veri Değil
MongoDB Shell
MongoDB Shell
(MongoDB Shell Quick Reference)
Command Line Options
Option Description
--help Komut satırı seçeneklerini göster
--nodb Veritabanına bağlanmadan akıllı mongo shell
--shell JavaScript dosyasını çalıştırdıktan sonra
mongo kabuğunda devam etmek için bir
JavaScript dosyasıyla (yani <file.js>) birlikte
kullanılır.
Command Helpers
Help Methods & Commands Description
help Show help
db.help() Show help for database methods.
db.<collection>.help() Show help on collection methods.
show dbs Print a list of all databases on the server.
use <db> Switch current database to <db>
show collections Print a list of all collections for current database.
show users Print a list of users for current database.
show roles Print a list of all roles, ot user-defined and built-in, for
the current database.
show profile Print the five most recent operations that took 1
millisecond or more.
show databases Print a list of all available databases.
load() Execute a JavaScript file.
Temel Shell JavaScript Operasyonları
JavaScript DB Operations Description
db.auth() If running in secure mode, authenticate the user.
coll = db.<collection> Set a specific collection in the current database to a variable coll.
db.collection.find() Find all documents in the collection and returns a cursor.
db.collection.insertOne() Insert a new document into the collection.
db.collection.insertMany() Insert multiple new documents into the collection.
db.collection.updateOne() Update a single existing document in the collection.
db.collection.updateMany() Update multiple existing documents in the collection.
db.collection.save() Insert either a new document or update an existing document in the
collection.
db.collection.deleteOne() Delete a single document from the collection.
db.collection.deleteMany() Delete documents from the collection.
db.collection.drop() Drops or removes completely the collection.
db.collection.createIndex() Create a new index on the collection if the index does not exist.
db.getSiblingDB() Return a reference to another database using this same connection
without explicitly switching the current database. This allows for cross
database queries.
Keyboard Shortcuts
Keystroke Function
Up + Arrow / CTRL - P Previous-Histroy
Down-Arrow / CTRL - N Next-History
Home / CTRL - A Beginning-of-Line
End / CTRL - E End-of-Line
Tab Automcomplete
Left + Arrow / CTRL + B Backward-Character
Right + Arrow / CTRL + F Forward-Character
CTRL + Left + Arrow / Meta + Left + Arrow / Meta + B Backward-Word
CTRL + Right + Arrow / Meta + Right + Arrow / Meta + F Forward-Word
CTRL + C Exit-Shell
CTRL + D Delete-Char (or Exit Shell)
CTRL + G Abort
Keyboard Shortcuts
Keystroke Function
CTRL + J / CTRL + M Accept-Line
CTRL + K Kill-Line
CTRL + L Clear-Screen
CTRL + R Reverse-Search-History
CTRL + S Forward-Search-History
CTRL + T Transpose-Chars
CTRL + H (i.e Backspace) Backward-Delete-Char
CTRL + I (i.e Tab) Complete
Meta + C Capitalize-Word
Meta + L Downcase-Word
Meta + U Upcase-Word
Meta + < Beginning-of-History
Meta + > End-of-History
RDBMS’leri MongoDB ile Eşleme
MongoDB Veritipleri
DataType Description
Double Used to stored floating point values.
String Commonly used datatype ad it is UTF-8 valid.
Object Used for storing embedded objects
Array Used for storing embedded objects
Binary Data Used to store binary data
Undefined Used to store undefined value
Object Id Used to store document's ID
Boolean Used to store Boolean value
Date Used to store current date time in UNIX format.
Null Used to store null value
Regular Expression Used to store regex
JavaScript Used to store JavaScript data without scope
Symbol Basically used to store string, but reserved for languages that use specific symbol
JavaScript with Scope Used to store JavaScript data with scope
Integer Used to store numerical value
Timestamp Used to track when a docuyment is modified
Min / Max Key Used to compare value against lowest and highest BSON elements.
Database
• Veritabanı, koleksiyonlar için fiziksel bir konteynırdır.
• MongoDB'de CREATE DATABASE komutu yoktur.
• MongoDB'de veritabanını manuel olarak oluşturmanız gerekmez.
• Koleksiyona döküman kaydettiğinizde otomatik olarak veritabanı oluşturulacaktır.
• use Komutu:
– MongoDB'de veritabanı oluşturmak için use komutu kullanılır.
– Komut, mevcut değilse yeni bir veritabanı oluşturur, aksi takdirde mevcut veritabanını döndürür.
– Syntax
• use DATABASE_NAME
• dropDatabase() Metodu
– dropDatabase() command is used to drop an existing database in MongoDB.
– Syntax
• db.dropDatabase()
Database
> use mydb
> db
> show dbs
> db.movie.insert({"name":"mongodb"})
> show dbs
> db.dropDatabase()
> show dbs
Collection
• Koleksiyon, MongoDB dökümanlarından oluşan bir gruptur.
• RDBMS’deki tablonun eşdeğeridir.
• Koleksiyonlar açıkça veya otomatik olarak oluşturulabilir.
• MongoDB, birkaç döküman eklediğinizde otomatik olarak koleksiyon oluşturur.
• createCollection() method is used to create collections explicitly in MongoDB:
– db.createCollection(name, options)
Field Type Description
Capped Boolean True olarak ayarlanmışsa, sınırlı bir koleksiyonu etkinleştirir.
AutoIndexID Boolean True olarak ayarlanmışsa, ID alanında otomatik olarak indeks oluşturur.
Varsayılan değeri false.
Size Number Sınırlı bir koleksiyon için bayt cinsinden maksimum boyutu belirtir.
Sınırlanmış doğruysa, bu alanı da belirtmeniz gerekir.
Max Number Sınırlı koleksiyonda izin verilen maksimum belge sayısını belirtir.
Documents
• Doküman, bir dizi key/value’dur.
• Dökümanlar dinamik şemaya sahiptir.
• MongoDB verileri BSON dökümanlar olarak saklar.
Döküman Yapısı
Örnek
Collections
(Alan Adlarına İlişkin Kısıtlamalar)
• _id alan adı, Primary Key olarak kullanılmak üzere ayrılmıştır; değeri koleksiyonda benzersiz olmalıdır,
değişmezdir ve bir dizi dışında herhangi bir türde olabilir.
• Alan adları boş karakter içeremez.
• Top-Level alan adları dolar işareti($) karakteriyle başlayamaz.
• Aksi takdirde sunucu, noktalar(yani) ve dolar işaretleri(yani $) içeren alan adlarının depolanmasına izin
verir.
Collections
(Alan Adlarına İlişkin Kısıtlamalar)
• Document Size Limit
– Maksimum BSON dökümanı boyutu 16 megabayttır.
• Document Field Order
– MongoDB, aşağıdaki durumlar dışında, yazma işlemlerinin ardından belge alanlarının sırasını korur:
• _id alanı her zaman belgedeki ilk alandır.
• Alan adlarının yeniden adlandırılmasını içeren güncellemeler, dökümandaki alanların yeniden
sıralanmasına neden olabilir.
• The _id Field
– _id alanı aşağıdaki davranışa ve kısıtlamalara sahiptir:
• Varsayılan olarak MongoDB, bir koleksiyonun oluşturulması sırasında _id alanında benzersiz bir
dizin oluşturur.
• _id alanı her zaman belgelerdeki ilk alandır.
• _id alanı, bir dizi dışında herhangi bir BSON veri türünün değerlerini içerebilir.
Collections
(Karşılaştırma veya Sıralama Düzeni)
Farklı BSON Tiplerinin Değerlerinin Karşılaştırılması
Order Data Types
1 MinKey (Internal Type)
2 Null
3 Numbers (ints, longs, doubles)
4 Symbol, String
5 Object
6 Array
7 BinData
8 ObjectId
9 Boolean
10 Date, Timestamp
11 Regular Expression
12 MaxKey (Internal Type)
Collections
(Insert Documents)
• Tekil Bir Döküman Eklemek
– insertOne() yöntemi, bir koleksiyona tek bir belge eklemek için kullanılır.
– Syntax
• db.COLLECTION_NAME.insertOne(document)
– Eklenen belgeleri almak için koleksiyonu sorgulayın:
• db.COLLECTION_NAME({})
• Insert için Ek Yöntemler:
– db.collection.update()
– db.collection.updateOne()
– db.collection.updateMany()
– db.collection.findAndModify()
– db.collection.findOneAndUpdate()
– db.collection.findOneAndReplace()
– db.collection.save()
– db.collection.bulkWrite()
Collections
(Query Documents)
• The find() Method
– MongoDB koleksiyonundan veri sorgulamak için MongoDB'nin find() yöntemi kullanılır.
– Syntax
• db.COLLECTION_NAME.find()
• The pretty() Method
– Sonuçları biçimlendirilmiş bir şekilde görüntülemek için pretty() yöntemi kullanılır.
– Syntax
• db.COLLECTION_NAME.find().pretty()
Operation Syntax
Equality {<key> : <value>}
Less Than {<key> : {$lt : <value>}}
Less Than Equals {<key> : {$lte : <value>}}
Greater Than {<key> : {$gt : <value>}}
Greater Than Equals {<key> : {$gte : <value>}}
Not Equals {<key> : {$ne : <value>}}
Collections
(AND & OR)
• AND
– Find() yönteminde, birden çok anahtarı "" ile ayırarak geçirirseniz, MongoDB bunu AND koşulu
olarak kabul eder.
Syntax
• OR
– OR koşuluna göre belgeleri sorgulamak için $ veya anahtar sözcüğünü kullanmanız gerekir.
Syntax
Bulk Operasyonları
• MongoDB, istemcilere yazma işlemlerini toplu olarak gerçekleştirme yeteneği sağlar.
• Toplu yazma işlemleri tek bir koleksiyonu etkiler.
• db.collection.bulkWrite() yöntemi, toplu ekleme, güncelleme ve kaldırma işlemleri gerçekleştirme
yeteneği sağlar.
• MongoDB ayrıca db.collection.insertMany() aracılığıyla toplu eklemeyi destekler
• Varsayılan olarak, bulkWrite() ordered işlemleri gerçekleştirir.
• Unordered yazma işlemlerini belirtmek için seçenekler dökümanında ordered:false değerini ayarlayın.
Bulk Operasyonları
(Ordered ve Unordered İşlemler)
• Toplu yazma işlemleri sıralı veya sırasız olabilir.
• Sıralı bir işlem listesi ile MongoDB işlemleri seri olarak yürütürken, Sırasız işlem listesi ile MongoDB,
işlemleri paralel olarak yürütebilir.
• Sharded(parçalanmış) bir koleksiyon üzerinde sıralı bir işlem listesi yürütmek, genellikle sırasız bir
liste yürütmekten daha yavaş olacaktır.
• Varsayılan olarak, bulkWrite() ordered işlemleri gerçekleştirir. Unordered yazma işlemlerini
belirtmek için seçenekler belgesinde sıralı: yanlış değerini ayarlayın.
• bulkWrite() Metodları:
– insertOne
– updateOne
– updateMany
– replaceOne
– deleteOne
– deleteMany
Her yazma işlemi, bir dizideki belge olarak bulkWrite() öğesine iletilir.
Retryable Writes
• Yeniden denenebilir yazma işlemleri, MongoDB sürücülerinin, ağ hatalarıyla karşılaşırlarsa veya replica
set’lerinde ya da sharded cluster sağlıklı bir primary key bulamazlarsa, belirli yazma işlemlerini tek
seferde otomatik olarak yeniden denemelerine olanak tanır.
• Prerequisites:
– Desteklenen Dağıtım Topolojileri
– Desteklenen Depolama Motoru
– MongoDB Drivers
– MongoDB VersionMongoDB Version
• Retryable Writes & Multi-Document Transactions:
– MongoDB sürücüleri, transaction commit ve abort operation dışında varsayılan olarak yeniden
denenebilir yazmaları etkinleştirmez.
– MongoDB Drivers:
• MongoDB driver’ında retryable writes’ı etkinleştirmek için connection string retryWrites
seçeneğini ekleyin:
– mongodb://localhost/?retryWrites=true
• Mongo Shell
– Mongo kabuğunda yeniden denenebilir yazmaları etkinleştirmek için --retryWrites
komut satırı seçeneğini kullanın:
» mongo --retryWrites
Retryable Writes
(Retryable Write Operasyonları)
Methods Descriptions
db.collection.findAndModify() findAndModify işlemleri.
Tüm findAndModify işlemleri tek döküman işlemleridir.
db.collection.findOneAndDelete()
db.collection.findOneAdReplace()
db.collection.findOneAndUpdate()
insertOne() Yalnızca single-document yazma işlemlerinden oluşan toplu
yazma işlemleri.
updateOne()
replaceOne()
deleteOne()
Bulk.find.removeOne() Yalnızca single-document yazma işlemlerinden oluşan toplu
yazma işlemleri.
Bulk.find.replaceOne()
Bulk.find.replaceOne()
Text Search
• MongoDB, dize içeriğinde metin araması gerçekleştiren sorgu işlemlerini destekler.
• MongoDB, dize içeriği üzerinde metin arama sorgularını desteklemek için metin index’leri sağlar.
• Metin index’leri, değeri bir string veya dizi olan herhangi bir alanı içerebilir.
• Metin arama sorguları gerçekleştirmek için koleksiyonunuzda bir text index olması gerekir.
• Bir koleksiyonun yalnızca bir text search index’i olabilir, ancak bu index birden çok alanı kapsayabilir.
• Text Search in Query Framework:
– $text sorgu operatörü, bir metin dizini içeren bir koleksiyonda metin aramaları gerçekleştirmek
için kullanılır.
• Text Search in the Aggregation Pipeline:
– In the aggregation pipeline, text search is available via the use of the $text query operator in the
$match stage.
• Kısıtlamalar
– $text içeren $match aşaması, pipeline hattındaki ilk aşama olmalıdır.
Geospatial Queries
(GeoJSON Objects)
• Dünya benzeri bir küre üzerinde geometriyi hesaplamak için, konum verilerinizi GeoJSON nesneleri
olarak saklayın.
• GeoJSON verilerini belirtmek için aşağıdakileri içeren bir embedded-document kullanın:
– GeoJSON nesne türünü belirten type adlı bir alan ve…
– nesnenin koordinatlarını belirten coordinates adlı bir alan.
• Enlem ve boylam koordinatlarını belirtiyorsanız, önce boylamı, ardından enlemi listeleyin:
– Geçerli boylam değerleri, her ikisi de dahil olmak üzere -180 ile 180 arasındadır.
– Geçerli enlem değerleri -90 ile 90 arasındadır (her ikisi dahil).
• Syntax
– <field> : { type: <GeoJSON type>, coordinates: <coordinates>}
Geospatial Queries
(Legacy Coordinate Pairs)
• Bir Euclidean düzlemindeki mesafeleri hesaplamak için, konum verilerini legacy coordinate pairs olarak
saklayın ve bir 2dindex kullanın.
• MongoDB, 2dsphere indeksi aracılığıyla legacy coordinate pairs küresel yüzey hesaplamalarını destekler.
• Verileri legacy coordinate pairs olarak belirtmek için bir array veya embedded document kullanabilirsiniz.
• Syntax:
Geospatial Queries
(Geospatial Indexes)
• 2dsphere
– 2dsphere indeksleri, dünya benzeri bir küre üzerinde geometrileri hesaplayan sorguları destekler.
– 2dsphere index’i oluşturmak için db.collection.createIndex() yöntemi kullanılır.
db.collection.createIndex({<location field>:"2dsphere"})
• 2d
– 2d index’ler, iki boyutlu bir düzlemde geometrileri hesaplayan sorguları destekler.
– 2 boyutlu bir index oluşturmak için db.collection.createIndex() metodu kullanılır.
db.collection.createIndex({<location field>:"2d"})
Geospatial Queries
(Geospatial Indexes and Sharded Collections)
• Bir koleksiyonu parçalarken(sharding) geospatial index’ini shard key olarak kullanamazsınız.
• Ancak, sharded bir koleksiyondaki geospatial index, shard key olarak farklı bir alan kullanılarak
oluşturulabilir.
• Geospatial index‘ler bir sorguyu kapsayamaz.
• Aşağıdaki geospatial işlemler, parçalanmış koleksiyonlarda desteklenir:
– $geoNear aggregation.
– $near ve $nearSphere sorgu operatörleri (MongoDB 4.0'dan itibaren)
– geoNear komutu (deprecated in MongoDB 4.0)
• Ayrıca, $geoWithin ve $geoIntersect kullanarak parçalanmış bir küme için geospatial verileri
sorgulayabilirsiniz.
Geospatial Queries
(Geospatial Query Operators)
Name Description
$geoIntersects GeoJSON geometrisi ile kesişen geometrileri seçer. 2dsphere endeksi $geoIntersects'i
destekler.
$geoWithin Sınırlayıcı bir GeoJSON geometrisi içindeki geometrileri seçer. 2dsphere ve 2d indeksleri
$geoWithin'i destekler.
$near Bir noktanın yakınındaki geospatial nesneleri döndürür. Geospatial bir index gerektirir.
2dsphere ve 2d index’leri $near'ı destekler.
$nearSphere Küre üzerindeki bir noktanın yakınındaki geospatial nesneleri döndürür. Geospatial bir
index gerektirir. 2dsphere ve 2d indeksleri $nearSphere'i destekler.
Geospatial Queries
(Geospatial Aggregation Stage)
Stage Description
$geoNear Geospatial noktanın yakınlığına göre sıralı döküman akışını döndürür. Geospatial
veriler için $match, $sort ve $limit fonksiyonlarını içerir. Çıktı dökümanlar ek bir
mesafe alanı içerir ve bir konum tanımlayıcı alanı içerebilir. $geoNear bir
geospatial index gerektirir.
Geospatial Queries
(Geospatial Command)
Command Description
geoNear (Deprecated in MongoDB 4.0) Belirli bir noktaya en yakın dökümanları döndüren geospatial
bir sorgu gerçekleştirir. Kullanımdan kaldırılan geoNear
komutu, geospatial bir dizin gerektirir.
Geospatial Queries
(Demo)
Find Restaurants with Geospatial Queries

More Related Content

What's hot

Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
MongoDB
 
Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginners
Neil Baker
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptx
Surya937648
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
Harri Kauhanen
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
Jaya Naresh Kovela
 
An Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDBAn Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDB
MongoDB
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
Araf Karsh Hamid
 
Elasticsearch Introduction
Elasticsearch IntroductionElasticsearch Introduction
Elasticsearch Introduction
Roopendra Vishwakarma
 
Chapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortalsChapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortals
nehabsairam
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
Shagun Rathore
 
Introduction to mongodb
Introduction to mongodbIntroduction to mongodb
Introduction to mongodb
neela madheswari
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redis
NexThoughts Technologies
 
Basics of MongoDB
Basics of MongoDB Basics of MongoDB
Basics of MongoDB
Habilelabs
 
An Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBAn Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDB
Lee Theobald
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
Krishna-Kumar
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
Arnab Mitra
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOps
Red Gate Software
 

What's hot (20)

Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginners
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptx
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
Introduction to NoSQL
Introduction to NoSQLIntroduction to NoSQL
Introduction to NoSQL
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
 
An Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDBAn Enterprise Architect's View of MongoDB
An Enterprise Architect's View of MongoDB
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Elasticsearch Introduction
Elasticsearch IntroductionElasticsearch Introduction
Elasticsearch Introduction
 
Docker and Devops
Docker and DevopsDocker and Devops
Docker and Devops
 
Chapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortalsChapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortals
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Introduction to mongodb
Introduction to mongodbIntroduction to mongodb
Introduction to mongodb
 
MongoDB
MongoDBMongoDB
MongoDB
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redis
 
Basics of MongoDB
Basics of MongoDB Basics of MongoDB
Basics of MongoDB
 
An Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDBAn Introduction To NoSQL & MongoDB
An Introduction To NoSQL & MongoDB
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOps
 

Similar to MongoDB Overview

AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkara JUG
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
gulindasdan
 
MongoDB ve C# Driver'ı
MongoDB ve C# Driver'ıMongoDB ve C# Driver'ı
MongoDB ve C# Driver'ı
Serdar Buyuktemiz
 
Nosql & MongoDB
Nosql & MongoDBNosql & MongoDB
Nosql & MongoDB
Serdar Buyuktemiz
 
No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?
Sistek Yazılım
 
Mongodb-Adem
Mongodb-AdemMongodb-Adem
Mongodb-Adem
Adem Ayas
 
Mongo sunum
Mongo sunumMongo sunum
Mongo sunum
Tarik Yilmaz
 
yazılımmuh10.pptx
yazılımmuh10.pptxyazılımmuh10.pptx
yazılımmuh10.pptx
UmurErenzdemir
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?
Ertugrul Akbas
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.com
Hakan Ilter
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
Cihan Özhan
 
Spring Data MongoDB Webiner
Spring Data MongoDB WebinerSpring Data MongoDB Webiner
Spring Data MongoDB Webiner
Hakan Özler
 
Delphi 7
Delphi 7Delphi 7
NodeJS ve MongoDB
NodeJS ve MongoDBNodeJS ve MongoDB
NodeJS ve MongoDB
Dilaver Demirel
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnıMustafa Tepe
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
Hakan Sarıbıyık
 
Büyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve HadoopBüyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve Hadoop
Cenk Derinozlu
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış
Veysel Taşcıoğlu
 

Similar to MongoDB Overview (20)

AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big Data
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
 
MongoDB ve C# Driver'ı
MongoDB ve C# Driver'ıMongoDB ve C# Driver'ı
MongoDB ve C# Driver'ı
 
Nosql & MongoDB
Nosql & MongoDBNosql & MongoDB
Nosql & MongoDB
 
No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?
 
Php veritabani
Php veritabaniPhp veritabani
Php veritabani
 
Mongodb-Adem
Mongodb-AdemMongodb-Adem
Mongodb-Adem
 
Mongo sunum
Mongo sunumMongo sunum
Mongo sunum
 
yazılımmuh10.pptx
yazılımmuh10.pptxyazılımmuh10.pptx
yazılımmuh10.pptx
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.com
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
 
Spring Data MongoDB Webiner
Spring Data MongoDB WebinerSpring Data MongoDB Webiner
Spring Data MongoDB Webiner
 
Delphi 7
Delphi 7Delphi 7
Delphi 7
 
NodeJS ve MongoDB
NodeJS ve MongoDBNodeJS ve MongoDB
NodeJS ve MongoDB
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Büyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve HadoopBüyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve Hadoop
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış
 

More from Cihan Özhan

AI and Machine Learning - Today’s Implementation Realities
AI and Machine Learning - Today’s Implementation RealitiesAI and Machine Learning - Today’s Implementation Realities
AI and Machine Learning - Today’s Implementation Realities
Cihan Özhan
 
Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)
Cihan Özhan
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)
Cihan Özhan
 
Go Book - Fonksiyonlar, Metotlar, Arayüzler ve Yapılar
Go Book - Fonksiyonlar, Metotlar, Arayüzler ve YapılarGo Book - Fonksiyonlar, Metotlar, Arayüzler ve Yapılar
Go Book - Fonksiyonlar, Metotlar, Arayüzler ve Yapılar
Cihan Özhan
 
Golang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili TemelleriGolang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili Temelleri
Cihan Özhan
 
Golang Book - Genel Bakış
Golang Book - Genel BakışGolang Book - Genel Bakış
Golang Book - Genel Bakış
Cihan Özhan
 
Golang Book - Giriş
Golang Book - GirişGolang Book - Giriş
Golang Book - Giriş
Cihan Özhan
 
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Cihan Özhan
 
Endüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom SistemlerEndüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom Sistemler
Cihan Özhan
 
AI Security : Machine Learning, Deep Learning and Computer Vision Security
AI Security : Machine Learning, Deep Learning and Computer Vision SecurityAI Security : Machine Learning, Deep Learning and Computer Vision Security
AI Security : Machine Learning, Deep Learning and Computer Vision Security
Cihan Özhan
 
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 20
İleri Seviye T-SQL Programlama - Chapter 20İleri Seviye T-SQL Programlama - Chapter 20
İleri Seviye T-SQL Programlama - Chapter 20
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 17
İleri Seviye T-SQL Programlama - Chapter 17İleri Seviye T-SQL Programlama - Chapter 17
İleri Seviye T-SQL Programlama - Chapter 17
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 16
İleri Seviye T-SQL Programlama - Chapter 16İleri Seviye T-SQL Programlama - Chapter 16
İleri Seviye T-SQL Programlama - Chapter 16
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 15
İleri Seviye T-SQL Programlama - Chapter 15İleri Seviye T-SQL Programlama - Chapter 15
İleri Seviye T-SQL Programlama - Chapter 15
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14
Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13
Cihan Özhan
 

More from Cihan Özhan (20)

AI and Machine Learning - Today’s Implementation Realities
AI and Machine Learning - Today’s Implementation RealitiesAI and Machine Learning - Today’s Implementation Realities
AI and Machine Learning - Today’s Implementation Realities
 
Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)
 
Go Book - Fonksiyonlar, Metotlar, Arayüzler ve Yapılar
Go Book - Fonksiyonlar, Metotlar, Arayüzler ve YapılarGo Book - Fonksiyonlar, Metotlar, Arayüzler ve Yapılar
Go Book - Fonksiyonlar, Metotlar, Arayüzler ve Yapılar
 
Golang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili TemelleriGolang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili Temelleri
 
Golang Book - Genel Bakış
Golang Book - Genel BakışGolang Book - Genel Bakış
Golang Book - Genel Bakış
 
Golang Book - Giriş
Golang Book - GirişGolang Book - Giriş
Golang Book - Giriş
 
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
 
Endüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom SistemlerEndüstriyel Yapay Zeka ve Otonom Sistemler
Endüstriyel Yapay Zeka ve Otonom Sistemler
 
AI Security : Machine Learning, Deep Learning and Computer Vision Security
AI Security : Machine Learning, Deep Learning and Computer Vision SecurityAI Security : Machine Learning, Deep Learning and Computer Vision Security
AI Security : Machine Learning, Deep Learning and Computer Vision Security
 
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
Yapay Zeka Güvenliği : Machine Learning & Deep Learning & Computer Vision Sec...
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
İleri Seviye T-SQL Programlama - Chapter 20
İleri Seviye T-SQL Programlama - Chapter 20İleri Seviye T-SQL Programlama - Chapter 20
İleri Seviye T-SQL Programlama - Chapter 20
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19
 
İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18
 
İleri Seviye T-SQL Programlama - Chapter 17
İleri Seviye T-SQL Programlama - Chapter 17İleri Seviye T-SQL Programlama - Chapter 17
İleri Seviye T-SQL Programlama - Chapter 17
 
İleri Seviye T-SQL Programlama - Chapter 16
İleri Seviye T-SQL Programlama - Chapter 16İleri Seviye T-SQL Programlama - Chapter 16
İleri Seviye T-SQL Programlama - Chapter 16
 
İleri Seviye T-SQL Programlama - Chapter 15
İleri Seviye T-SQL Programlama - Chapter 15İleri Seviye T-SQL Programlama - Chapter 15
İleri Seviye T-SQL Programlama - Chapter 15
 
İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14İleri Seviye T-SQL Programlama - Chapter 14
İleri Seviye T-SQL Programlama - Chapter 14
 
İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13İleri Seviye T-SQL Programlama - Chapter 13
İleri Seviye T-SQL Programlama - Chapter 13
 

MongoDB Overview

  • 1.
  • 2. MongoDB MongoDB NoSQL Database Cihan Özhan | DeepLab.co | Founder, AI Engineer, Mentor
  • 3. MongoDB Nedir? • MongoDB bir döküman veritabanıdır. • NoSQL veritabanları ile girişte görüldüğü gibi, satırların(veya MongoDB'de dökümanlar) önceden tanımlanmış şemaya sahip olmasına gerek yoktur. • MongoDB'de bulunan veri modeli, hiyerarşik ilişkileri temsil etmenize, dizileri depolamanıza ve diğer daha karmaşık yapıları daha kolay bir şekilde göstermenize olanak tanır. • MongoDB ortamları oldukça ölçeklenebilir.
  • 4. MongoDB Geçmişi • MongoDB, 2007 yılında Eliot Horowitz ve Dwight Merriman tarafından geliştirildi. • Dwight Merriman'a göre bu veritabanı adı, büyük miktarda veriyi işleme fikrini desteklemek için humongous kelimesinden türetildi. • 2009 yılında MongoDB açık kaynaklı bir proje olarak yapılırken, şirket ticari destek hizmetleri sunmuştur. – Pek çok şirket, şaşırtıcı birçok özelliği için MongoDB'yi kullanmaya başladı. • New York Times gazetesi, fotoğrafları göndermek için web tabanlı bir uygulama oluşturmak için MongoDB'yi kullandı. • MongoDB'nin ilk hazır üretimi, Mart 2010'da piyasaya sürülen 1.4 sürümünden düşünüldü. • 2013 yılında şirket resmi olarak MongoDB Inc.'e seçildi. • Bundan sonra MongoDB 2.4.9, 10 Ocak 2014'te yayınlandı. • MongoDB 4.0.3, mevcut en son ve kararlı sürümdür.
  • 5. MongoDB'de Genel Terimler • _id – The _id field represents a unique value in the MongoDB document. The _id fields is like the document's primary key. • collection – Bu, MongoDB dökümanlarından oluşan bir gruptur. • cursor – Bu, bir sorgunun sonuç kümesine bir göstericidir. • database – Bu, koleksiyonlar için bir kaptır. Her veritabanı, dosya sisteminde kendi dosya kümesini alır. • document – MongoDB koleksiyonundaki bir kayda temelde belge denir. • field – Bir belgedeki ad-değer çiftidir.
  • 6.
  • 7. MongoDB Kullanan Kuruluşlar • MongoDB'yi iş uygulamalarının çoğu için veritabanı olarak kullanan bazı büyük ve önemli kuruluşlar aşağıdadır: – LinkedIn – eBay – SAP – Adobe – McAfee – FourSquare – MetLife
  • 8. MongoDB'nin Özellikleri • Ad-Hoc Sorgu Desteği • Aggregation • Yüksek Performans • Yatay Ölçeklenebilirlik (Horizontal Scalability) • Geniş Media Desteği • Yük Dengeleme (Load Balancing) • Replication • Index • GridFS • MapReduce • Auto-Sharding
  • 9. MongoDB'nin Avantajları • Open Source • Parçalama (Sharding) • Daha Hızlı İşlem(Process) • Schemaless • Document-Based • No SQL Injection
  • 10. MongoDB vs. MySQL MongoDB MySQL Birçok alternatif veri modeli İlişkisel veritabanı yönetim sistemi Schemaless Schema Atomikliği destekler Transactional Relational Data Store JSON query SQL Server-Side Scripting Stored Procedures Implemented Yüksek Ölçekli Ölçeklenebilir Değil Daha Hızlı Daha Yavaş
  • 11. MongoDB vs. Cassandra Cassandra MongoDB Cassandra, yüksek performanslı dağıtılmış veritabanı sistemidir. MongoDB, platformlar arası döküman odaklı veritabanı sistemidir. Cassandra Java ile yazılmıştır. MongoDB, C++ ile yazılmıştır Cassandra, verileri SQL biçimi gibi tablo biçiminde depolar. MongoDB, verileri JSON biçiminde depolar. Cassandra Apache lisansına sahiptir. MongoDB, AGPL lisansına ve Apache driver’larına sahiptir. Cassandra temelde büyük miktarda veriyi işlemek için tasarlanmıştır. MongoDB, JSON benzeri dökümanlarla başa çıkmak ve uygulamalara daha kolay ve daha hızlı erişmek için tasarlanmıştır. Cassandra, tek bir hata noktası olmadan yüksek kullanılabilirlik sağlar. MongoDB'nin başarısızlık durumunda yönetilmesi kolaydır.
  • 12. MongoDB CouchDB Document-Based modeli takip ederse ve veriler JSON formatında sunulur. Document-oriented modeli takip ederse ve veriler JSON formatında sunulur. Binary protokol ve TCP/IP üzerinden özel protokol kullanır. HTTP/REST tabanlı arayüz kullanır. Çok sezgiseldir ve çok iyi tasarlanmıştır. Veritabanı koleksiyonları ve koleksiyon dökümanları içerir. CouchDB'de veritabanı dökümanları içerir. MongoDB, collection + object-based sorgu dili oluşturarak Map/Reduce(JavaScript)'i izler. Map/Reduce sorgu yöntemini izler. (JavaScript + Diğerleri) master-slave replication’ı destekler. Custom conflict resolution function’lar ile master-master çoğaltmayı destekler. Yerinde güncelleme MVVC’yi takip eder.(Multi Version Concurrency Control) MongoDB tutarlılığı destekler. Availability’I destekler. MongoDB son derece tutarlıdır. CouchDB tutarlıdır. C++ ile geliştirildi. Erlang dilinde yazıldı. MongoDB vs. CouchDB
  • 13. MongoDB Redis Document-store yapısını takip eden en popüler NoSQL veritabanlarından biridir. Veritabanı, önbellek ve mesaj aracısı olarak kullanılan bellek içi veri yapısı deposudur. Document-store modelini takip eder. Redis, key-value store modelini takip eder. MongoDB Inc. tarafından geliştirilmiştir. Salvatore Sanfilippo tarafından geliştirildi. Ücretsiz ve açık kaynaklıdır. Subscription-based ve açık kaynaklıdır. C++ ile geliştirildi. Redis, C dilinde yazılmış ve uygulanmıştır. Sunucu işletim sistemleri Linux, OS X, Solaris, Windows'dur. Sunucu işletim sistemleri BSD, Linux, OS X, Windows'dur. İkincil index içerir. İkincil index desteklemez. JSON kullan. Proprietary Protocol’ü takip eder. Proprietary Protocol’ü takip eder. Sunucu Tarafı komut dosyası JavaScript'tir Redis'teki Sunucu Tarafı komut dosyası Lua’dır. MapReduce var. MapReduce'a sahip değil MongoDB vs. Redis
  • 14. MongoDB Redis Nihai Tutarlılık Eventual Consistency ve Immediate Consistency Kullanıcılar ve roller için erişim hakları. Basit password-based erişim kontrolü Yeni nesil veritabanı olarak kabul ediliyor. Dünyanın en hızlı veritabanı olarak derecelendirilmiştir. MongoDB, günümüz uygulamalarının gerektirdiği esneklik, ölçek ve performansın yanı sıra geleneksel veritabanlarının en iyisini sağlar. Redis, bir bellek içi veritabanı platformudur; strings, hashes, sets, lists, sorted sets, bitmaps, hyperloglogs ve geospatial index gibi çok çeşitli veri yapıları için destek sağlar. 30 milyon indirme(her gün binlerce indirme ile artıyor). Fortune 100'ün üçte birinden fazlası dahil 3.000'den fazla müşteri. Redis Labs, dünya çapında 60000'den fazla müşteriden oluşur ve NoSQL, bellek içi ve operasyonel veritabanları hakkındaki en iyi analist raporlarında tutarlı bir şekilde lider olarak sıralanır. MongoDB vs. Redis
  • 15. MongoDB Neden Kullanılmalı? • Document-Oriented • Ad-Hoc Queries • Indexing • Replication • Load Balancing • Flexibility – MongoDB'deki veriler esnek bir şemaya sahiptir. Koleksiyonlar belge yapısını zorlamaz. – Bu esneklik, uygulamanıza ve performans gereksinimlerine uygun veri modelleme seçenekleri sunar. • Scalability – Verilerin boyutu arttıkça, tek bir makine verileri depolamak veya kabul edilebilir bir okuma ve yazma verimi sağlamak için yeterli olmayabilir. – Sharding, sorunu yatay ölçeklemeyle çözer. Sharding, veri büyümesinin taleplerini karşılamak için MongoDB'nin izlediği yaklaşımdır. • Performance – MongoDB, MySQL'den 2 ila 10 kat ve CouchDB'den 50 kat daha hızlıdır.
  • 16. MongoDB Ne Zaman Kullanılmalı? • Veri Ekleme Tutarlılığı • Data Corruption Recovery (Veri Kurtarma) • Load Balancing • JOIN’lerden Kaçınmak İçin • Şema Değişiklikleri İçin En Uygun Yol • İlişkisel Veri Değil
  • 18. MongoDB Shell (MongoDB Shell Quick Reference)
  • 19. Command Line Options Option Description --help Komut satırı seçeneklerini göster --nodb Veritabanına bağlanmadan akıllı mongo shell --shell JavaScript dosyasını çalıştırdıktan sonra mongo kabuğunda devam etmek için bir JavaScript dosyasıyla (yani <file.js>) birlikte kullanılır.
  • 20. Command Helpers Help Methods & Commands Description help Show help db.help() Show help for database methods. db.<collection>.help() Show help on collection methods. show dbs Print a list of all databases on the server. use <db> Switch current database to <db> show collections Print a list of all collections for current database. show users Print a list of users for current database. show roles Print a list of all roles, ot user-defined and built-in, for the current database. show profile Print the five most recent operations that took 1 millisecond or more. show databases Print a list of all available databases. load() Execute a JavaScript file.
  • 21. Temel Shell JavaScript Operasyonları JavaScript DB Operations Description db.auth() If running in secure mode, authenticate the user. coll = db.<collection> Set a specific collection in the current database to a variable coll. db.collection.find() Find all documents in the collection and returns a cursor. db.collection.insertOne() Insert a new document into the collection. db.collection.insertMany() Insert multiple new documents into the collection. db.collection.updateOne() Update a single existing document in the collection. db.collection.updateMany() Update multiple existing documents in the collection. db.collection.save() Insert either a new document or update an existing document in the collection. db.collection.deleteOne() Delete a single document from the collection. db.collection.deleteMany() Delete documents from the collection. db.collection.drop() Drops or removes completely the collection. db.collection.createIndex() Create a new index on the collection if the index does not exist. db.getSiblingDB() Return a reference to another database using this same connection without explicitly switching the current database. This allows for cross database queries.
  • 22. Keyboard Shortcuts Keystroke Function Up + Arrow / CTRL - P Previous-Histroy Down-Arrow / CTRL - N Next-History Home / CTRL - A Beginning-of-Line End / CTRL - E End-of-Line Tab Automcomplete Left + Arrow / CTRL + B Backward-Character Right + Arrow / CTRL + F Forward-Character CTRL + Left + Arrow / Meta + Left + Arrow / Meta + B Backward-Word CTRL + Right + Arrow / Meta + Right + Arrow / Meta + F Forward-Word CTRL + C Exit-Shell CTRL + D Delete-Char (or Exit Shell) CTRL + G Abort
  • 23. Keyboard Shortcuts Keystroke Function CTRL + J / CTRL + M Accept-Line CTRL + K Kill-Line CTRL + L Clear-Screen CTRL + R Reverse-Search-History CTRL + S Forward-Search-History CTRL + T Transpose-Chars CTRL + H (i.e Backspace) Backward-Delete-Char CTRL + I (i.e Tab) Complete Meta + C Capitalize-Word Meta + L Downcase-Word Meta + U Upcase-Word Meta + < Beginning-of-History Meta + > End-of-History
  • 25.
  • 26.
  • 28. DataType Description Double Used to stored floating point values. String Commonly used datatype ad it is UTF-8 valid. Object Used for storing embedded objects Array Used for storing embedded objects Binary Data Used to store binary data Undefined Used to store undefined value Object Id Used to store document's ID Boolean Used to store Boolean value Date Used to store current date time in UNIX format. Null Used to store null value Regular Expression Used to store regex JavaScript Used to store JavaScript data without scope Symbol Basically used to store string, but reserved for languages that use specific symbol JavaScript with Scope Used to store JavaScript data with scope Integer Used to store numerical value Timestamp Used to track when a docuyment is modified Min / Max Key Used to compare value against lowest and highest BSON elements.
  • 29. Database • Veritabanı, koleksiyonlar için fiziksel bir konteynırdır. • MongoDB'de CREATE DATABASE komutu yoktur. • MongoDB'de veritabanını manuel olarak oluşturmanız gerekmez. • Koleksiyona döküman kaydettiğinizde otomatik olarak veritabanı oluşturulacaktır. • use Komutu: – MongoDB'de veritabanı oluşturmak için use komutu kullanılır. – Komut, mevcut değilse yeni bir veritabanı oluşturur, aksi takdirde mevcut veritabanını döndürür. – Syntax • use DATABASE_NAME • dropDatabase() Metodu – dropDatabase() command is used to drop an existing database in MongoDB. – Syntax • db.dropDatabase()
  • 30. Database > use mydb > db > show dbs > db.movie.insert({"name":"mongodb"}) > show dbs > db.dropDatabase() > show dbs
  • 31. Collection • Koleksiyon, MongoDB dökümanlarından oluşan bir gruptur. • RDBMS’deki tablonun eşdeğeridir. • Koleksiyonlar açıkça veya otomatik olarak oluşturulabilir. • MongoDB, birkaç döküman eklediğinizde otomatik olarak koleksiyon oluşturur. • createCollection() method is used to create collections explicitly in MongoDB: – db.createCollection(name, options) Field Type Description Capped Boolean True olarak ayarlanmışsa, sınırlı bir koleksiyonu etkinleştirir. AutoIndexID Boolean True olarak ayarlanmışsa, ID alanında otomatik olarak indeks oluşturur. Varsayılan değeri false. Size Number Sınırlı bir koleksiyon için bayt cinsinden maksimum boyutu belirtir. Sınırlanmış doğruysa, bu alanı da belirtmeniz gerekir. Max Number Sınırlı koleksiyonda izin verilen maksimum belge sayısını belirtir.
  • 32. Documents • Doküman, bir dizi key/value’dur. • Dökümanlar dinamik şemaya sahiptir. • MongoDB verileri BSON dökümanlar olarak saklar. Döküman Yapısı Örnek
  • 33. Collections (Alan Adlarına İlişkin Kısıtlamalar) • _id alan adı, Primary Key olarak kullanılmak üzere ayrılmıştır; değeri koleksiyonda benzersiz olmalıdır, değişmezdir ve bir dizi dışında herhangi bir türde olabilir. • Alan adları boş karakter içeremez. • Top-Level alan adları dolar işareti($) karakteriyle başlayamaz. • Aksi takdirde sunucu, noktalar(yani) ve dolar işaretleri(yani $) içeren alan adlarının depolanmasına izin verir.
  • 34. Collections (Alan Adlarına İlişkin Kısıtlamalar) • Document Size Limit – Maksimum BSON dökümanı boyutu 16 megabayttır. • Document Field Order – MongoDB, aşağıdaki durumlar dışında, yazma işlemlerinin ardından belge alanlarının sırasını korur: • _id alanı her zaman belgedeki ilk alandır. • Alan adlarının yeniden adlandırılmasını içeren güncellemeler, dökümandaki alanların yeniden sıralanmasına neden olabilir. • The _id Field – _id alanı aşağıdaki davranışa ve kısıtlamalara sahiptir: • Varsayılan olarak MongoDB, bir koleksiyonun oluşturulması sırasında _id alanında benzersiz bir dizin oluşturur. • _id alanı her zaman belgelerdeki ilk alandır. • _id alanı, bir dizi dışında herhangi bir BSON veri türünün değerlerini içerebilir.
  • 35. Collections (Karşılaştırma veya Sıralama Düzeni) Farklı BSON Tiplerinin Değerlerinin Karşılaştırılması Order Data Types 1 MinKey (Internal Type) 2 Null 3 Numbers (ints, longs, doubles) 4 Symbol, String 5 Object 6 Array 7 BinData 8 ObjectId 9 Boolean 10 Date, Timestamp 11 Regular Expression 12 MaxKey (Internal Type)
  • 36. Collections (Insert Documents) • Tekil Bir Döküman Eklemek – insertOne() yöntemi, bir koleksiyona tek bir belge eklemek için kullanılır. – Syntax • db.COLLECTION_NAME.insertOne(document) – Eklenen belgeleri almak için koleksiyonu sorgulayın: • db.COLLECTION_NAME({}) • Insert için Ek Yöntemler: – db.collection.update() – db.collection.updateOne() – db.collection.updateMany() – db.collection.findAndModify() – db.collection.findOneAndUpdate() – db.collection.findOneAndReplace() – db.collection.save() – db.collection.bulkWrite()
  • 37. Collections (Query Documents) • The find() Method – MongoDB koleksiyonundan veri sorgulamak için MongoDB'nin find() yöntemi kullanılır. – Syntax • db.COLLECTION_NAME.find() • The pretty() Method – Sonuçları biçimlendirilmiş bir şekilde görüntülemek için pretty() yöntemi kullanılır. – Syntax • db.COLLECTION_NAME.find().pretty() Operation Syntax Equality {<key> : <value>} Less Than {<key> : {$lt : <value>}} Less Than Equals {<key> : {$lte : <value>}} Greater Than {<key> : {$gt : <value>}} Greater Than Equals {<key> : {$gte : <value>}} Not Equals {<key> : {$ne : <value>}}
  • 38. Collections (AND & OR) • AND – Find() yönteminde, birden çok anahtarı "" ile ayırarak geçirirseniz, MongoDB bunu AND koşulu olarak kabul eder. Syntax • OR – OR koşuluna göre belgeleri sorgulamak için $ veya anahtar sözcüğünü kullanmanız gerekir. Syntax
  • 39. Bulk Operasyonları • MongoDB, istemcilere yazma işlemlerini toplu olarak gerçekleştirme yeteneği sağlar. • Toplu yazma işlemleri tek bir koleksiyonu etkiler. • db.collection.bulkWrite() yöntemi, toplu ekleme, güncelleme ve kaldırma işlemleri gerçekleştirme yeteneği sağlar. • MongoDB ayrıca db.collection.insertMany() aracılığıyla toplu eklemeyi destekler • Varsayılan olarak, bulkWrite() ordered işlemleri gerçekleştirir. • Unordered yazma işlemlerini belirtmek için seçenekler dökümanında ordered:false değerini ayarlayın.
  • 40. Bulk Operasyonları (Ordered ve Unordered İşlemler) • Toplu yazma işlemleri sıralı veya sırasız olabilir. • Sıralı bir işlem listesi ile MongoDB işlemleri seri olarak yürütürken, Sırasız işlem listesi ile MongoDB, işlemleri paralel olarak yürütebilir. • Sharded(parçalanmış) bir koleksiyon üzerinde sıralı bir işlem listesi yürütmek, genellikle sırasız bir liste yürütmekten daha yavaş olacaktır. • Varsayılan olarak, bulkWrite() ordered işlemleri gerçekleştirir. Unordered yazma işlemlerini belirtmek için seçenekler belgesinde sıralı: yanlış değerini ayarlayın. • bulkWrite() Metodları: – insertOne – updateOne – updateMany – replaceOne – deleteOne – deleteMany Her yazma işlemi, bir dizideki belge olarak bulkWrite() öğesine iletilir.
  • 41. Retryable Writes • Yeniden denenebilir yazma işlemleri, MongoDB sürücülerinin, ağ hatalarıyla karşılaşırlarsa veya replica set’lerinde ya da sharded cluster sağlıklı bir primary key bulamazlarsa, belirli yazma işlemlerini tek seferde otomatik olarak yeniden denemelerine olanak tanır. • Prerequisites: – Desteklenen Dağıtım Topolojileri – Desteklenen Depolama Motoru – MongoDB Drivers – MongoDB VersionMongoDB Version • Retryable Writes & Multi-Document Transactions: – MongoDB sürücüleri, transaction commit ve abort operation dışında varsayılan olarak yeniden denenebilir yazmaları etkinleştirmez. – MongoDB Drivers: • MongoDB driver’ında retryable writes’ı etkinleştirmek için connection string retryWrites seçeneğini ekleyin: – mongodb://localhost/?retryWrites=true • Mongo Shell – Mongo kabuğunda yeniden denenebilir yazmaları etkinleştirmek için --retryWrites komut satırı seçeneğini kullanın: » mongo --retryWrites
  • 42. Retryable Writes (Retryable Write Operasyonları) Methods Descriptions db.collection.findAndModify() findAndModify işlemleri. Tüm findAndModify işlemleri tek döküman işlemleridir. db.collection.findOneAndDelete() db.collection.findOneAdReplace() db.collection.findOneAndUpdate() insertOne() Yalnızca single-document yazma işlemlerinden oluşan toplu yazma işlemleri. updateOne() replaceOne() deleteOne() Bulk.find.removeOne() Yalnızca single-document yazma işlemlerinden oluşan toplu yazma işlemleri. Bulk.find.replaceOne() Bulk.find.replaceOne()
  • 43. Text Search • MongoDB, dize içeriğinde metin araması gerçekleştiren sorgu işlemlerini destekler. • MongoDB, dize içeriği üzerinde metin arama sorgularını desteklemek için metin index’leri sağlar. • Metin index’leri, değeri bir string veya dizi olan herhangi bir alanı içerebilir. • Metin arama sorguları gerçekleştirmek için koleksiyonunuzda bir text index olması gerekir. • Bir koleksiyonun yalnızca bir text search index’i olabilir, ancak bu index birden çok alanı kapsayabilir. • Text Search in Query Framework: – $text sorgu operatörü, bir metin dizini içeren bir koleksiyonda metin aramaları gerçekleştirmek için kullanılır. • Text Search in the Aggregation Pipeline: – In the aggregation pipeline, text search is available via the use of the $text query operator in the $match stage. • Kısıtlamalar – $text içeren $match aşaması, pipeline hattındaki ilk aşama olmalıdır.
  • 44. Geospatial Queries (GeoJSON Objects) • Dünya benzeri bir küre üzerinde geometriyi hesaplamak için, konum verilerinizi GeoJSON nesneleri olarak saklayın. • GeoJSON verilerini belirtmek için aşağıdakileri içeren bir embedded-document kullanın: – GeoJSON nesne türünü belirten type adlı bir alan ve… – nesnenin koordinatlarını belirten coordinates adlı bir alan. • Enlem ve boylam koordinatlarını belirtiyorsanız, önce boylamı, ardından enlemi listeleyin: – Geçerli boylam değerleri, her ikisi de dahil olmak üzere -180 ile 180 arasındadır. – Geçerli enlem değerleri -90 ile 90 arasındadır (her ikisi dahil). • Syntax – <field> : { type: <GeoJSON type>, coordinates: <coordinates>}
  • 45. Geospatial Queries (Legacy Coordinate Pairs) • Bir Euclidean düzlemindeki mesafeleri hesaplamak için, konum verilerini legacy coordinate pairs olarak saklayın ve bir 2dindex kullanın. • MongoDB, 2dsphere indeksi aracılığıyla legacy coordinate pairs küresel yüzey hesaplamalarını destekler. • Verileri legacy coordinate pairs olarak belirtmek için bir array veya embedded document kullanabilirsiniz. • Syntax:
  • 46. Geospatial Queries (Geospatial Indexes) • 2dsphere – 2dsphere indeksleri, dünya benzeri bir küre üzerinde geometrileri hesaplayan sorguları destekler. – 2dsphere index’i oluşturmak için db.collection.createIndex() yöntemi kullanılır. db.collection.createIndex({<location field>:"2dsphere"}) • 2d – 2d index’ler, iki boyutlu bir düzlemde geometrileri hesaplayan sorguları destekler. – 2 boyutlu bir index oluşturmak için db.collection.createIndex() metodu kullanılır. db.collection.createIndex({<location field>:"2d"})
  • 47. Geospatial Queries (Geospatial Indexes and Sharded Collections) • Bir koleksiyonu parçalarken(sharding) geospatial index’ini shard key olarak kullanamazsınız. • Ancak, sharded bir koleksiyondaki geospatial index, shard key olarak farklı bir alan kullanılarak oluşturulabilir. • Geospatial index‘ler bir sorguyu kapsayamaz. • Aşağıdaki geospatial işlemler, parçalanmış koleksiyonlarda desteklenir: – $geoNear aggregation. – $near ve $nearSphere sorgu operatörleri (MongoDB 4.0'dan itibaren) – geoNear komutu (deprecated in MongoDB 4.0) • Ayrıca, $geoWithin ve $geoIntersect kullanarak parçalanmış bir küme için geospatial verileri sorgulayabilirsiniz.
  • 48. Geospatial Queries (Geospatial Query Operators) Name Description $geoIntersects GeoJSON geometrisi ile kesişen geometrileri seçer. 2dsphere endeksi $geoIntersects'i destekler. $geoWithin Sınırlayıcı bir GeoJSON geometrisi içindeki geometrileri seçer. 2dsphere ve 2d indeksleri $geoWithin'i destekler. $near Bir noktanın yakınındaki geospatial nesneleri döndürür. Geospatial bir index gerektirir. 2dsphere ve 2d index’leri $near'ı destekler. $nearSphere Küre üzerindeki bir noktanın yakınındaki geospatial nesneleri döndürür. Geospatial bir index gerektirir. 2dsphere ve 2d indeksleri $nearSphere'i destekler.
  • 49. Geospatial Queries (Geospatial Aggregation Stage) Stage Description $geoNear Geospatial noktanın yakınlığına göre sıralı döküman akışını döndürür. Geospatial veriler için $match, $sort ve $limit fonksiyonlarını içerir. Çıktı dökümanlar ek bir mesafe alanı içerir ve bir konum tanımlayıcı alanı içerebilir. $geoNear bir geospatial index gerektirir.
  • 50. Geospatial Queries (Geospatial Command) Command Description geoNear (Deprecated in MongoDB 4.0) Belirli bir noktaya en yakın dökümanları döndüren geospatial bir sorgu gerçekleştirir. Kullanımdan kaldırılan geoNear komutu, geospatial bir dizin gerektirir.