MongoDB - Documento di query

In questo capitolo impareremo come interrogare un documento dalla raccolta MongoDB.

Il metodo find ()

Per eseguire query sui dati dalla raccolta MongoDB, è necessario utilizzare MongoDB find() metodo.

Sintassi

La sintassi di base di find() metodo è il seguente:

>db.COLLECTION_NAME.find()

find() il metodo visualizzerà tutti i documenti in modo non strutturato.

Esempio

Supponiamo di aver creato una raccolta denominata mycol come -

> use sampleDB
switched to db sampleDB
> db.createCollection("mycol")
{ "ok" : 1 }
>

E ho inserito 3 documenti in esso usando il metodo insert () come mostrato di seguito -

> db.mycol.insert([
	{
		title: "MongoDB Overview",
		description: "MongoDB is no SQL database",
		by: "tutorials point",
		url: "http://www.tutorialspoint.com",
		tags: ["mongodb", "database", "NoSQL"],
		likes: 100
	},
	{
		title: "NoSQL Database",
		description: "NoSQL database doesn't have tables",
		by: "tutorials point",
		url: "http://www.tutorialspoint.com",
		tags: ["mongodb", "database", "NoSQL"],
		likes: 20,
		comments: [
			{
				user:"user1",
				message: "My first comment",
				dateCreated: new Date(2013,11,10,2,35),
				like: 0
			}
		]
	}
])

Il seguente metodo recupera tutti i documenti nella raccolta:

> db.mycol.find()
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "NoSQL Database", "description" : "NoSQL database doesn't have tables", "by" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 20, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ] }
>

Il metodo pretty ()

Per visualizzare i risultati in modo formattato, puoi usare il metodo pretty ().

Sintassi

>db.COLLECTION_NAME.find().pretty()

Esempio

L'esempio seguente recupera tutti i documenti dalla raccolta denominata mycol e li dispone in un formato di facile lettura.

> db.mycol.find().pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB is no SQL database",
	"by" : "tutorials point",
	"url" : "http://www.tutorialspoint.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534d"),
	"title" : "NoSQL Database",
	"description" : "NoSQL database doesn't have tables",
	"by" : "tutorials point",
	"url" : "http://www.tutorialspoint.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 20,
	"comments" : [
		{
			"user" : "user1",
			"message" : "My first comment",
			"dateCreated" : ISODate("2013-12-09T21:05:00Z"),
			"like" : 0
		}
	]
}

Il metodo findOne ()

Oltre al metodo find (), esiste findOne() metodo, che restituisce un solo documento.

Sintassi

>db.COLLECTIONNAME.findOne()

Esempio

L'esempio seguente recupera il documento con il titolo MongoDB Overview.

> db.mycol.findOne({title: "MongoDB Overview"})
{
	"_id" : ObjectId("5dd6542170fb13eec3963bf0"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB is no SQL database",
	"by" : "tutorials point",
	"url" : "http://www.tutorialspoint.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}

RDBMS clausola Where Equivalenti in MongoDB

Per interrogare il documento sulla base di alcune condizioni, è possibile utilizzare le seguenti operazioni.

Operazione Sintassi Esempio Equivalente RDBMS
Uguaglianza {<key>: {$ eg; <value>}} db.mycol.find ({"by": "tutorials point"}). pretty () where by = 'tutorials point'
Meno di {<key>: {$ lt: <value>}} db.mycol.find ({"mi piace": {$ lt: 50}}). pretty () dove mi piace <50
Minore di uguale {<key>: {$ lte: <value>}} db.mycol.find ({"mi piace": {$ lte: 50}}). pretty () dove mi piace <= 50
Più grande di {<key>: {$ gt: <value>}} db.mycol.find ({"mi piace": {$ gt: 50}}). pretty () dove mi piace> 50
Maggiore di uguale a {<key>: {$ gte: <value>}} db.mycol.find ({"mi piace": {$ gte: 50}}). pretty () dove mi piace> = 50
Non uguale {<key>: {$ ne: <value>}} db.mycol.find ({"mi piace": {$ ne: 50}}). pretty () dove piace! = 50
Valori in una matrice {<key>: {$ in: [<value1>, <value2>, …… <valueN>]}} db.mycol.find ({"name": {$ in: ["Raj", "Ram", "Raghu"]}}). pretty () Dove il nome corrisponde a uno qualsiasi dei valori in: ["Raj", "Ram", "Raghu"]
Valori non in una matrice {<key>: {$ nin: <value>}} db.mycol.find ({"name": {$ nin: ["Ramu", "Raghav"]}}). pretty () Dove i valori del nome non sono nell'array: ["Ramu", "Raghav"] o, non esiste affatto

AND in MongoDB

Sintassi

Per eseguire query sui documenti in base alla condizione AND, è necessario utilizzare $ e parola chiave. Di seguito è riportata la sintassi di base di AND -

>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })

Esempio

L'esempio seguente mostrerà tutti i tutorial scritti da "tutorials point" e il cui titolo è "MongoDB Overview".

> db.mycol.find({$and:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB is no SQL database",
	"by" : "tutorials point",
	"url" : "http://www.tutorialspoint.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
>

Per l'esempio sopra riportato, la clausola dove sarà equivalente ' where by = 'tutorials point' AND title = 'MongoDB Overview' '. Puoi passare un numero qualsiasi di coppie chiave e valore nella clausola find.

O in MongoDB

Sintassi

Per eseguire query sui documenti in base alla condizione OR, è necessario utilizzare $orparola chiave. Di seguito è riportata la sintassi di base diOR -

>db.mycol.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

Esempio

L'esempio seguente mostrerà tutti i tutorial scritti da "tutorials point" o il cui titolo è "MongoDB Overview".

>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "tutorials point",
   "url": "http://www.tutorialspoint.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

Utilizzo di AND e OR insieme

Esempio

Il seguente esempio mostrerà i documenti con Mi piace maggiori di 10 e il cui titolo è "Panoramica MongoDB" o "Punto tutorial". La clausola SQL equivalente è'where likes>10 AND (by = 'tutorials point' OR title = 'MongoDB Overview')'

>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"},
   {"title": "MongoDB Overview"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "tutorials point",
   "url": "http://www.tutorialspoint.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

NOR in MongoDB

Sintassi

Per eseguire query sui documenti in base alla condizione NOT, è necessario utilizzare la parola chiave $ not. Di seguito è riportata la sintassi di base diNOT -

>db.COLLECTION_NAME.find(
	{
		$not: [
			{key1: value1}, {key2:value2}
		]
	}
)

Esempio

Supponiamo di aver inserito 3 documenti nella raccolta empDetails come mostrato di seguito -

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"
		}
	]
)

L'esempio seguente recupererà i documenti il ​​cui nome non è "Radhika" e il cognome non è "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"
}

NON in MongoDB

Sintassi

Per eseguire query sui documenti in base alla condizione NOT, è necessario utilizzare la parola chiave $ not che segue è la sintassi di base di NOT -

>db.COLLECTION_NAME.find(
	{
		$NOT: [
			{key1: value1}, {key2:value2}
		]
	}
).pretty()

Esempio

L'esempio seguente recupererà i documenti la cui età non è maggiore di 25

> db.empDetails.find( { "Age": { $not: { $gt: "25" } } } )
{
	"_id" : ObjectId("5dd6636870fb13eec3963bf7"),
	"First_Name" : "Fathima",
	"Last_Name" : "Sheik",
	"Age" : "24",
	"e_mail" : "[email protected]",
	"phone" : "9000054321"
}