MongoDB - Document de requête

Dans ce chapitre, nous allons apprendre à interroger un document de la collection MongoDB.

La méthode find ()

Pour interroger les données de la collection MongoDB, vous devez utiliser MongoDB find() méthode.

Syntaxe

La syntaxe de base de find() la méthode est la suivante -

>db.COLLECTION_NAME.find()

find() La méthode affichera tous les documents de manière non structurée.

Exemple

Supposons que nous ayons créé une collection nommée mycol comme -

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

Et inséré 3 documents dedans en utilisant la méthode insert () comme indiqué ci-dessous -

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

La méthode suivante récupère tous les documents de la collection -

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

La méthode pretty ()

Pour afficher les résultats de manière formatée, vous pouvez utiliser la méthode pretty ().

Syntaxe

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

Exemple

L'exemple suivant récupère tous les documents de la collection nommée mycol et les organise dans un format facile à lire.

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

La méthode findOne ()

Outre la méthode find (), il existe findOne() méthode, qui ne renvoie qu’un seul document.

Syntaxe

>db.COLLECTIONNAME.findOne()

Exemple

L'exemple suivant récupère le document avec le titre 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
}

SGBDR où les équivalents de clause dans MongoDB

Pour interroger le document sur la base d'une condition, vous pouvez utiliser les opérations suivantes.

Opération Syntaxe Exemple Équivalent du SGBDR
Égalité {<key>: {$ eg; <valeur>}} db.mycol.find ({"by": "tutorials point"}). pretty () où by = 'tutorials point'
Moins que {<key>: {$ lt: <valeur>}} db.mycol.find ({"aime": {$ lt: 50}}). pretty () où aime <50
Inférieur à égal {<key>: {$ lte: <valeur>}} db.mycol.find ({"aime": {$ lte: 50}}). pretty () où aime <= 50
Plus grand que {<key>: {$ gt: <valeur>}} db.mycol.find ({"aime": {$ gt: 50}}). pretty () où aime> 50
Supérieur à égal {<key>: {$ gte: <value>}} db.mycol.find ({"aime": {$ gte: 50}}). pretty () où aime> = 50
Pas égal {<key>: {$ ne: <valeur>}} db.mycol.find ({"aime": {$ ne: 50}}). pretty () où aime! = 50
Valeurs dans un tableau {<key>: {$ in: [<value1>, <value2>, …… <valueN>]}} db.mycol.find ({"nom": {$ dans: ["Raj", "Ram", "Raghu"]}}). pretty () Où le nom correspond à l'une des valeurs de: ["Raj", "Ram", "Raghu"]
Les valeurs ne sont pas dans un tableau {<key>: {$ nin: <valeur>}} db.mycol.find ({"nom": {$ nin: ["Ramu", "Raghav"]}}). pretty () Où les valeurs de nom ne sont pas dans le tableau: ["Ramu", "Raghav"] ou, n'existe pas du tout

ET dans MongoDB

Syntaxe

Pour interroger des documents en fonction de la condition AND, vous devez utiliser $ and keyword. Voici la syntaxe de base de AND -

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

Exemple

L'exemple suivant montrera tous les tutoriels écrits par 'tutorials point' et dont le titre est '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
}
>

Pour l'exemple ci-dessus, la clause where équivalente sera ' where by = 'tutorials point' AND title = 'MongoDB Overview' '. Vous pouvez transmettre n'importe quel nombre de paires clé / valeur dans la clause find.

OU dans MongoDB

Syntaxe

Pour interroger des documents en fonction de la condition OR, vous devez utiliser $ormot-clé. Voici la syntaxe de base deOR -

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

Exemple

L'exemple suivant montrera tous les tutoriels écrits par 'tutorials point' ou dont le titre est '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"
}
>

Utiliser AND et OR ensemble

Exemple

L'exemple suivant montrera les documents qui ont des likes supérieurs à 10 et dont le titre est «MongoDB Overview» ou par «tutorials point». La clause SQL équivalente où est'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 dans MongoDB

Syntaxe

Pour interroger des documents en fonction de la condition NOT, vous devez utiliser le mot-clé $ not. Voici la syntaxe de base deNOT -

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

Exemple

Supposons que nous ayons inséré 3 documents dans la collection empDetails comme indiqué ci-dessous -

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'exemple suivant récupérera le (s) document (s) dont le prénom n'est pas "Radhika" et le nom n'est pas "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"
}

PAS dans MongoDB

Syntaxe

Pour interroger des documents en fonction de la condition NOT, vous devez utiliser le mot-clé $ not suivant la syntaxe de base de NOT -

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

Exemple

L'exemple suivant récupérera le ou les documents dont l'âge n'est pas supérieur à 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"
}