SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Un backend NoSQL pour
Geektic avec MongoDB
Jug Summer Camp 2013 - La Rochelle
Sébastien PRUNIER - @sebprunier
Jérôme CREIGNOU - @jcreignou
Geektic
● Site de rencontre pour les geeks en
conférence :-)
● Développé par la team “Code Story” lors de
Devoxx France 2013
● Backend = local-geeks.json
https://github.com/CodeStory/code-story-geektic
Geektic
● Inscription via Twitter
MongoDB
● Base de données NoSQL, orientée
Document
● Stockage JSON
{
"nom": "Zuckerberg",
"prenom": "Mark",
"email": "imceobitch@facebook.com",
"ville": "Palo Alto",
"likes": ["Facebook",
"Tongues",
"PHP"],
"hate1": "Tyler Winklevoss",
"hate2": "Cameron Winklevoss"
}
MongoDB 2.4
Principales nouveautés
● Text Search (beta)
● GeoSpatial Indexes
○ GeoJSON
○ Spherical Geometry
● Hashed Indexes
○ Hashed Shard Keys
Step 1 - Load Geeks
● Script de chargement des geeks dans la
base Mongo
● Node.js
○ Léger, simple, JSON
○ Driver pour Mongo
○ On aime bien :-)
Step 1 - Load Geeks
var geeks = require('../../web/geeks.json');
...
db.collection('geeks', function (err, collection) {
if (err) { … }
collection.insert(geeks, function (err, result) {
console.log(result.length + ' geek(s) inserted !');
});
});
Step 2 - Backend Mongo
● Branchement du backend sur la base Mongo
● Utilisation de Jongo
○ “Comme si on était dans le shell”
geeks.find("{ 'likes' : {$in : #} }", keywords).as(Geek.class)
Testing
● To Mock or Not To Mock ?
● embedmongo-maven-plugin
○ pre-integration-tests : start mongo
○ post-integration-tests : stop mongo
http://antoniogoncalves.org/2012/11/27/launching-the-nomock-movement/
Step 2 - Backend Mongo
Regression detected !!
● Sensibilité à la casse
○ Java ~ java
● Une piste : regexp
db.geeks.find({likes : /tests/i})
Index & Performance
Step 3 - Text Search
● Indexes de type “text”
db.geeks.ensureIndex({likes: 'text'})
● Requêtes
○ OR : scala groovy
○ PHRASE : “coder en java”
○ NOT : java -scala
db.geeks.runCommand( "text", { search: "java -scala" } )
Step 3 - Text Search
● Support des langues
○ code ~ coding
db.geeks.runCommand("text", {search: "code", language:
"english"})
● Pertinence des résultats (Scoring)
"results" : [
{ "score" : 1.1, "obj" : { … } },
{ "score" : 0.75, "obj" : { … } },
{ "score" : 0.75, "obj" : { … } }
]
Step 4 - Geo Localisation
● Index géospatial
○ < 2.4 : “2d”
○ >= 2.4 : “2dsphere”
db.geeks.ensureIndex( { location : "2dsphere" } )
vs.
Step 4 - Geo Localisation
● GeoJSON
○ Point
○ LineString
○ Polygon
● Opérateurs
○ $geoWithin
○ $near
○ $geoIntersect
http://geojson.org/geojson-spec.html
Kandinsky
Step 4 - Geo Localisation
● Ajout des données géographiques pour les
geeks déjà présents dans la base
○ Encore du Node.js :-)
var gm = require('googlemaps');
...
gm.geocode(geek.ville, function (err, villes) {
// enrich geek
});
Step 4 - Geo Localisation
● Requête simple
○ “Rechercher les geeks proches de Paris dans un
rayon de 10 km”
db.geeks.find({
location : {
$near : {
$geometry : {
type : "Point",
coordinates : [2.35, 48.853]
},
$maxDistance : 10000
}
}
})
Step 4 - Geo Localisation
● Aggregation Framework
○ “Regrouper les geeks par affinité, se situant à La
Rochelle dans un rayon de 2 km”
$unwind $group$near
The end
Merci pour votre attention !
● Questions ?
● Réponses !
● Let’s tweet !!

Más contenido relacionado

Similar a JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB

Construisez votre première application MongoDB
Construisez votre première application MongoDBConstruisez votre première application MongoDB
Construisez votre première application MongoDBMongoDB
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.MongoDB
 
2014 04-09-fr - app dev series - session 4 - indexing
2014 04-09-fr - app dev series - session 4 - indexing2014 04-09-fr - app dev series - session 4 - indexing
2014 04-09-fr - app dev series - session 4 - indexingMongoDB
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...Horacio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...Horacio Gonzalez
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDBMongoDB
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01MongoDB
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2Horacio Gonzalez
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasBruno Bonnin
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasPierre-Alban DEWITTE
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchDavid Pilato
 
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...MongoDB
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudriaDavid Pilato
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Aurélien Maury
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - ElasticsearchDavid Pilato
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Sébastien Prunier
 

Similar a JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB (20)

Construisez votre première application MongoDB
Construisez votre première application MongoDBConstruisez votre première application MongoDB
Construisez votre première application MongoDB
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
 
2014 04-09-fr - app dev series - session 4 - indexing
2014 04-09-fr - app dev series - session 4 - indexing2014 04-09-fr - app dev series - session 4 - indexing
2014 04-09-fr - app dev series - session 4 - indexing
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDB
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
Pg jsonb format 16-9
Pg jsonb format 16-9Pg jsonb format 16-9
Pg jsonb format 16-9
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - Elasticsearch
 
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudria
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - Elasticsearch
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
 

Más de Sébastien Prunier

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...Sébastien Prunier
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...Sébastien Prunier
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?Sébastien Prunier
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...Sébastien Prunier
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !Sébastien Prunier
 
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...Sébastien Prunier
 
Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Sébastien Prunier
 
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Sébastien Prunier
 
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Sébastien Prunier
 

Más de Sébastien Prunier (11)

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !
 
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
 
Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10
 
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
 
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
 
Nantes Jug - Java 7
Nantes Jug - Java 7Nantes Jug - Java 7
Nantes Jug - Java 7
 

JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB

  • 1. Un backend NoSQL pour Geektic avec MongoDB Jug Summer Camp 2013 - La Rochelle Sébastien PRUNIER - @sebprunier Jérôme CREIGNOU - @jcreignou
  • 2. Geektic ● Site de rencontre pour les geeks en conférence :-) ● Développé par la team “Code Story” lors de Devoxx France 2013 ● Backend = local-geeks.json https://github.com/CodeStory/code-story-geektic
  • 4. MongoDB ● Base de données NoSQL, orientée Document ● Stockage JSON { "nom": "Zuckerberg", "prenom": "Mark", "email": "imceobitch@facebook.com", "ville": "Palo Alto", "likes": ["Facebook", "Tongues", "PHP"], "hate1": "Tyler Winklevoss", "hate2": "Cameron Winklevoss" }
  • 5. MongoDB 2.4 Principales nouveautés ● Text Search (beta) ● GeoSpatial Indexes ○ GeoJSON ○ Spherical Geometry ● Hashed Indexes ○ Hashed Shard Keys
  • 6. Step 1 - Load Geeks ● Script de chargement des geeks dans la base Mongo ● Node.js ○ Léger, simple, JSON ○ Driver pour Mongo ○ On aime bien :-)
  • 7. Step 1 - Load Geeks var geeks = require('../../web/geeks.json'); ... db.collection('geeks', function (err, collection) { if (err) { … } collection.insert(geeks, function (err, result) { console.log(result.length + ' geek(s) inserted !'); }); });
  • 8. Step 2 - Backend Mongo ● Branchement du backend sur la base Mongo ● Utilisation de Jongo ○ “Comme si on était dans le shell” geeks.find("{ 'likes' : {$in : #} }", keywords).as(Geek.class)
  • 9. Testing ● To Mock or Not To Mock ? ● embedmongo-maven-plugin ○ pre-integration-tests : start mongo ○ post-integration-tests : stop mongo http://antoniogoncalves.org/2012/11/27/launching-the-nomock-movement/
  • 10. Step 2 - Backend Mongo Regression detected !! ● Sensibilité à la casse ○ Java ~ java ● Une piste : regexp db.geeks.find({likes : /tests/i}) Index & Performance
  • 11. Step 3 - Text Search ● Indexes de type “text” db.geeks.ensureIndex({likes: 'text'}) ● Requêtes ○ OR : scala groovy ○ PHRASE : “coder en java” ○ NOT : java -scala db.geeks.runCommand( "text", { search: "java -scala" } )
  • 12. Step 3 - Text Search ● Support des langues ○ code ~ coding db.geeks.runCommand("text", {search: "code", language: "english"}) ● Pertinence des résultats (Scoring) "results" : [ { "score" : 1.1, "obj" : { … } }, { "score" : 0.75, "obj" : { … } }, { "score" : 0.75, "obj" : { … } } ]
  • 13. Step 4 - Geo Localisation ● Index géospatial ○ < 2.4 : “2d” ○ >= 2.4 : “2dsphere” db.geeks.ensureIndex( { location : "2dsphere" } ) vs.
  • 14. Step 4 - Geo Localisation ● GeoJSON ○ Point ○ LineString ○ Polygon ● Opérateurs ○ $geoWithin ○ $near ○ $geoIntersect http://geojson.org/geojson-spec.html
  • 16. Step 4 - Geo Localisation ● Ajout des données géographiques pour les geeks déjà présents dans la base ○ Encore du Node.js :-) var gm = require('googlemaps'); ... gm.geocode(geek.ville, function (err, villes) { // enrich geek });
  • 17. Step 4 - Geo Localisation ● Requête simple ○ “Rechercher les geeks proches de Paris dans un rayon de 10 km” db.geeks.find({ location : { $near : { $geometry : { type : "Point", coordinates : [2.35, 48.853] }, $maxDistance : 10000 } } })
  • 18. Step 4 - Geo Localisation ● Aggregation Framework ○ “Regrouper les geeks par affinité, se situant à La Rochelle dans un rayon de 2 km” $unwind $group$near
  • 19. The end Merci pour votre attention ! ● Questions ? ● Réponses ! ● Let’s tweet !!