English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questa sezione, impareremo come eseguire query sui documenti nella collezione MongoDB.
Per consultare i dati nella collezione MongoDB, devi utilizzare il metodofind()Metodo.
find()La sintassi di base del metodo e' la seguente-
> db.COLLECTION_NAME.find()
find() Il metodo mostrera' tutti i documenti in modo non strutturato.
Supponiamo di aver gia' creato una collezione chiamata mycol-
> use sampleDB switched to db sampleDB > db.createCollection("mycol") {"ok": 1} >
Esegui l'uso del metodo insert() per inserire 3 documenti all'interno, come indicato di seguito-
> db.mycol.insert([ { title: "Panoramica MongoDB", description: "MongoDB non è una banca SQL", by: "Manuale di base", url: "http://it.oldtoolbag.com", tags: ["mongodb", "banca dei dati", "NoSQL"], likes: 100 }, { title: "Banca NoSQL", description: "La banca NoSQL non ha tabelle", by: "Manuale di base", url: "http://it.oldtoolbag.com", tags: ["mongodb", "banca dei dati", "NoSQL"], likes: 20, comments: [ { user: "user1", message: "Il mio primo commento", dateCreated: new Date(2013,11,10,2,35), like: 0 } ] } ]
I seguenti metodi ricercano tutti i documenti nell'insieme-
> db.mycol.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "Panoramica MongoDB", "description" : "MongoDB non è una banca SQL", "by" : "Manuale di base", "url" : "http://it.oldtoolbag.com", "tags" : [ "mongodb", "banca dei dati", "NoSQL" ], "likes" : 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "Banca NoSQL", "description" : "La banca NoSQL non ha tabelle", "by" : "Manuale di base", "url" : "http://it.oldtoolbag.com", "tags" : [ "mongodb", "banca dei dati", "NoSQL" ], "likes" : 20, "comments" : [ { "user" : "user1", "message" : "Il mio primo commento", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ] } >
Per visualizzare i risultati in formato formattato, è possibile utilizzare il metodo pretty().
> db.COLLECTION_NAME.find().pretty()
Esempio seguente di ricerca di tutti i documenti nella collezione chiamata mycol e di visualizzazione in un formato leggibile.
> db.mycol.find().pretty() { "_id": ObjectId("5dd4e2cc0821d3b44607534c"), "title": "MongoDB Overview", "description": "MongoDB non è un database SQL", "by": "基础教程", "url": "http://it.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": 100 } { "_id": ObjectId("5dd4e2cc0821d3b44607534d"), "title": "NoSQL Database", "description": "NoSQL database without tables", "by": "基础教程", "url": "http://it.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": 20, "comments": [ { "user": "user1", "message": "My first comment", "dateCreated": ISODate("2013-12-09T21:05:00Z"), "like": 0 } ] }
Oltre al metodo find(), c'è anchefindOne()Il metodo restituisce solo un documento.
> db.COLLECTIONNAME.findOne()
Esempio seguente di ricerca del documento con il titolo MongoDB Overview.
> db.mycol.findOne({title: "MongoDB Overview"}) { "_id": ObjectId("5dd6542170fb13eec3963bf0"), "title": "MongoDB Overview", "description": "MongoDB non è un database SQL", "by": "基础教程", "url": "http://it.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": 100 }
Per effettuare una query di documento basata su determinate condizioni, è possibile utilizzare le seguenti operazioni.
Operazione | Formato | Esempio | Espressioni simili in RDBMS |
---|---|---|---|
Uguale a | {<key>:<value>} | db.col.find({"by":"基础教程"}).pretty() | where by = '基础教程' |
Minore di | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 |
Minore o uguale a | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}}).pretty() | where likes <= 50 |
Maggiore di | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 |
Maggiore o uguale a | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}}).pretty() | where likes >= 50 |
Diverso da | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |
Il valore è nell'array | {<key>:{$in:[<value1>, <value2>,……<valueN>]}} | db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty() | Dove name corrisponde a qualsiasi valore dell'array :["Raj", "Ram", "Raghu"] |
Il valore non è nell'array | {<key>:{$nin:<value>}} | db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty() | Il valore name non è nell'array :["Ramu", "Raghav"] o non esiste affatto |
Per effettuare una query di documento basata su condizioni AND, è necessario utilizzare la chiave $and. Ecco la sintassi di base di AND:
>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })
Esempio seguente mostrerà tutti i tutorial scritti da "基础教程" e con il titolo "MongoDB Overview".
> db.mycol.find({$and:[{"by":"基础教程"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId("5dd4e2cc0821d3b44607534c"), "title": "MongoDB Overview", "description": "MongoDB non è un database SQL", "by": "基础教程", "url": "https://it.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": 100 } >
Per l'esempio fornito, la clausola WHERE equivalente sarà"where by = '基础教程' AND title = 'MongoDB Overview'". Puoi passare una qualsiasi quantità di coppie di chiave e valore nel sottoinsieme find.
Per cercare documenti basati sulla condizione "OR", è necessario utilizzare$orParola chiave. Di seguito èORSintassi di base:
>db.mycol.find( { $or: [[ {key1: value1}, {key2:value2} ] } ).pretty()
Esempio seguente mostrerà tutti i tutorial scritti da "tutorials point" o con il titolo "MongoDB Overview".
>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB non è un database SQL", "by": "Guida di Base", "url": "http://it.oldtoolbag.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
Esempio seguente mostrerà i documenti con like (likes) superiori a 10 e con il titolo "MongoDB概述" o by equal a "基础教程". Equivalente alla clausola WHERE di SQL: "where likes>10 AND (by = '基础教程' OR title = 'MongoDB概述')"
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"}, {"title": "Panoramica di MongoDB"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "Panoramica di MongoDB", "description": "MongoDB non è un database SQL", "by": "Guida di Base", "url": "http://it.oldtoolbag.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
Per eseguire una ricerca sui documenti basata sulla condizione NOR, è necessario utilizzare la chiave di ricerca $nor. Ecco come fare:NORSintassi di base:
> db.COLLECTION_NAME.find( { $nor: [ {key1: value1}, {key2:value2} ] } )
Supponiamo che stiamo nella raccolta empDetails Sono stati inseriti 3 documenti, come segue-
db.empDetails.insertMany( [ { First_Name: "Radhika", Last_Name: "Sharma", Age: "26", e_mail: "[email protected]", phone: "9000012345" }, { First_Name: "Rachel", Last_Name: "Christopher", Age: "27", e_mail: "[email protected]", phone: "9000054321" }, { First_Name: "Fathima", Last_Name: "Sheik", Age: "24", e_mail: "[email protected]", phone: "9000054321" } ] )
Ecco un esempio che cerca i documenti con nome diverso da "Radhika" e nome diverso da "Christopher"
> db.empDetails.find( { $nor:[ 40 {"First_Name": "Radhika"}, {"Last_Name": "Christopher"} ] } ).pretty() { "_id": ObjectId("5dd631f270fb13eec3963bef"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }
Per eseguire una ricerca sui documenti basata sulla condizione NOT, è necessario utilizzare la chiave di ricerca $not, ecco come fare:NOTSintassi di base:
> db.COLLECTION_NAME.find( { $NOT: [ {key1: value1}, {key2:value2} ] } ).pretty()
Esempio seguente recupererà i documenti con età non superiore a 25 anni
> db.empDetails.find({"Age": {$not: {$gt: "25"}}}) { "_id" : ObjectId("5dd6636870fb13eec3963bf7"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }