Query di esempio dal database restaurants
Database:
curl -o primer.json https://raw.githubusercontent.com/OpenKitten/Mongo-Assets/master/primer-dataset.json
{
"address" : {
"building" : "2780",
"coord" : [
-73.98241999999999,
40.579505
],
"street" : "Stillwell Avenue",
"zipcode" : "11224"
},
"borough" : "Brooklyn",
"cuisine" : "American",
"grades" : [
{
"date" : ISODate("2014-06-10T00:00:00Z"),
"grade" : "A",
"score" : 5
},
{
"date" : ISODate("2013-06-05T00:00:00Z"),
"grade" : "A",
"score" : 7
},
{
"date" : ISODate("2012-04-13T00:00:00Z"),
"grade" : "A",
"score" : 12
},
{
"date" : ISODate("2011-10-12T00:00:00Z"),
"grade" : "A",
"score" : 12
}
],
"name" : "Riviera Caterer",
"restaurant_id" : "40356018"
}
Mostra un ristorante, ma non visualizzare l'id
db.restaurants.find({},{_id: 0}).limit(1).pretty();
Mostra l'ID del ristorante, il nome, il quartiere, lo zip code ma non l'ID del documento
db.restaurants.find({},{"restaurant_id" : 1,"name":1,"borough":1,"address.zipcode" :1,"_id":0}).pretty();
Mostra i ristoranti che hanno l'indirizzo con latidudine maggiore di 20
db.restaurants.find({"address.coord.0": {"$gte" : 20} },{_id: 0}).limit(2).pretty();
Mostra i ristoranti che hanno l'indirizzo con latidudine maggiore di 20 e minore di 200
db.restaurants.find({"address.coord.0": {"$gte" : 20, "$lte" : 300} },{_id: 0}).limit(2).pretty();
Mostra i ristoranti che fanno cucina cinese
db.restaurants.find({ "cuisine" : "Chinese" },{_id: 0}).limit(2).pretty();
Mostra i ristoranti che non fanno cucina cinese
db.restaurants.find({ "cuisine" : {"$ne": "Chinese" },{_id: 0}).limit(2).pretty();
Mostra i ristoranti fanno cucina cinese a Brooklyn
db.restaurants.find({ "cuisine" : "Chinese", "borough" : "Brooklyn" },{_id: 0}).limit(2).pretty();
Mostra i ristoranti che hanno id 40356018 e "40360076"
db.restaurants.find({"restaurant_id" : { "$in" : ["40356018", "40360076"]}}).pretty()
Mostra i ristoranti che non hanno nemmeno un voto 10 o 9 o 8
db.restaurants.find({"grades.score" : { "$nin" : [10, 9, 8]}}).pretty()
Mostra i ristoranti fanno cucina cinese oppure sono a Brooklyn
db.restaurants.find({ "$or":[{ "cuisine" : "Chinese"}, {"borough" : "Brooklyn" }]},{_id: 0}).limit(2).pretty();
Mostra i ristoranti hanno nel nome "china"
db.restaurants.find({"name" : {$regex: /china/i}},{_id: 0}).limit(2).pretty();
Mostra i ristoranti fanno cucina cinese e hanno nel nome "china" oppure sono a Brooklyn e hanno nel nome "burger"
db.restaurants.find({
"$or":[
{
"$and":[
{ "cuisine" : "Chinese"},
{"name" : {$regex: /china/i}},
]
},
{
"$and":[
{ "cuisine" : "American"},
{"name" : {$regex: /burger/i}},
]
}]
},
{_id: 0}).limit(2).pretty();
Mostra i ristoranti hanno che hanno building nullo
db.restaurants.find({"address.building":null}).limit(2).pretty();
Mostra l'indirizzo dei ristoranti cne sono a Brooklyn hanno un nome nullo
var cursor = db.restaurants.find({"borough":"Brooklyn", "name": { "$nin" :[null,""]}}).limit(2).pretty();
while(cursor.hasNext()){
var t = cursor.next();
print(t.name + " - " + t.address.street + " " + t.address.building );
}
Prendi i ristoranti di Brooklyn, ma mostrane solamente 4 saltando i primi 6, ordinali per nome decrescente
db.restaurants.find({"borough":"Brooklyn"}).limit(4).skip(6).sort({"name":-1}).pretty();
Prendi i ristoranti di Brooklyn, mostrane il nome e un indice progressivo solamente dei primi 10 ordinali per nome decrescente
var list = db.restaurants.find({"borough":"Brooklyn"}, {"name":1}).limit(10).skip(0).sort({"name":-1}).pretty();
var i =0;
while(list.hasNext()){
var t= list.next();
print(i+") " + t.name);
i++;
}
Prendi i ristoranti di Brooklyn, ordinali per cucina e building
db.restaurants.find({"borough":"Brooklyn"}).sort({"cuisine":1, "address.building":1 }).pretty();
Prendi i ristoranti di cucina italiana che contengono la parola 'pizza' nel nome
db.restaurants.find({"cuisine":"Italian", "name":{$regex: /pizza/i}}).sort({"name":1}).pretty();
Mostra nome e grade dei ristoranti di cucina italiana che hanno almeno una A come voto
db.restaurants.find({"cuisine":"Italian", "grades.grade": "A" }, {"_id":0, "name":1, "grades.grade":1}).sort({"name":1}).pretty();
Mostra nome e grade dei ristoranti di cucina italiana che hanno alemeno A e B come voto
db.restaurants.find({"cuisine":"Italian", "grades.grade": {$all:["A","B"]} }, {"_id":0, "name":1, "grades.grade":1}).sort({"name":1}).pretty();
Mostra nome e grade dei ristoranti di cucina italiana che hanno almeno A e B come voto
db.restaurants.find({"$where" : function ()
{
if (this["grades"].length==0) return false;
for (index = 0; index < this["grades"].length; index++) {
if (this["grades"][index]["grade"] != "A" && this["grades"][index]["grade"] != "B")
return false;
}
return true; }
},{"_id":0, "name": 1, "grades.grade": 1});
Update il post con il nuovo valore
var post={"title" : "My Blog Post", "content" : "Here's my blog post.", "date" : new Date()}
db.blog.update({title : "My Blog Post"}, post)