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)