English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Recherche de document MongoDB

在本章中,我们将学习如何从MongoDB集合中查询文档。

find()方法

要查询MongoDB集合中的数据,您需要使用MongoDB的find()方法。

Grammaire

find()方法的基本语法如下-

>db.COLLECTION_NAME.find()

find() 方法将以非结构化方式显示所有文档。

Exemple en ligne

假设我们已经创建了一个名为 mycol 的集合-

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

et utilisez la méthode insert() pour les insérer3un document, comme suit-

> db.mycol.insert([
	{
		title : "Vue d'ensemble MongoDB",
		description : "MongoDB n'est pas une base de données SQL",
		by : "Tutoriel de base",
		url : "http://fr.oldtoolbag.com",
		tags : ["mongodb", "database", "NoSQL"],
		likes : 100
	}
	{
		title : "Base de données NoSQL",
		description : "Les bases de données NoSQL n'ont pas de tables",
		by : "Tutoriel de base",
		url : "http://fr.oldtoolbag.com",
		tags : ["mongodb", "database", "NoSQL"],
		likes : 20,
		comments : [
			{
				user : "user1",
				message : "Mon premier commentaire",
				dateCreated : new Date(2013,11,10,2,35,
				like : 0
			}
		]
	}
])

Les méthodes suivantes extraient tous les documents de la collection.-

> db.mycol.find(),
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534c)), "title" : "Vue d'ensemble MongoDB", "description" : "MongoDB n'est pas une base de données SQL", "by" : "Tutoriel de base", "url" : "http://fr.oldtoolbag.com", "tags" : ["mongodb", "database", "NoSQL"], "likes" : 100 }
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534d)), "title" : "Base de données NoSQL", "description" : "Les bases de données NoSQL n'ont pas de tables", "by" : "Tutoriel de base", "url" : "http://fr.oldtoolbag.com", "tags" : ["mongodb", "database", "NoSQL"], "likes" : 20, "comments" : [{ "user" : "user1", "message" : "Mon premier commentaire", "dateCreated" : ISODate("2013-12-09T21:05:00Z)), "like" : 0 }]}
>

Méthode pretty(),

Pour afficher les résultats en formatage, vous pouvez utiliser la méthode pretty().

Grammaire

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

Exemple en ligne

Les exemples suivants extraient tous les documents de la collection nommée mycol et les organisent dans un format facile à lire.

> db.mycol.find().pretty(),
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title" : "MongoDB Aperçu",
	"description" : "MongoDB n'est pas une base de données SQL",
	"by" : "tutoriels de base",
	"url" : "http://fr.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"base de données",
		"NoSQL"
	],
	"likes" : 100
}
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534d)),
	"title" : "Base de données NoSQL",
	"description" : "Les bases de données NoSQL n'ont pas de tables"
	"by" : "tutoriels de base",
	"url" : "http://fr.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"base de données",
		"NoSQL"
	],
	"likes" : 20,
	"comments" : [
		{
			"user" : "user1",
			"message" : "Mon premier commentaire",
			"dateCreated" : ISODate("2013-12-09T21:05:00Z"),
			"like" : 0
		}
	]
}

La méthode findOne()

En plus de la méthode find(), il existe aussifindOne()La méthode ne retourne qu'un document.

Grammaire

>db.COLLECTIONNAME.findOne()

Exemple en ligne

Les exemples suivants recherchent les documents dont le titre est MongoDB Overview.

> db.mycol.findOne({title: "MongoDB Overview"})
{
	"_id" : ObjectId("5dd6542170fb13eec3963bf0"),
	"title" : "MongoDB Aperçu",
	"description" : "MongoDB n'est pas une base de données SQL",
	"by" : "tutoriels de base",
	"url" : "http://fr.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"base de données",
		"NoSQL"
	],
	"likes" : 100
}

Comparaison des expressions WHERE de MongoDB et SGBDR

Pour effectuer une recherche de documents en fonction de certaines conditions, vous pouvez utiliser les opérations suivantes.

OpérationFormatExempleExpression similaire dans un SGBDR
égal à{<key>:<value>}db.col.find({"by":"基础教程"}).pretty()where by = '基础教程'
inférieur à{<key>:{$lt:<value>}}db.col.find({"likes":{$lt:50}).pretty()where likes < 50
au plus ou égal à{<key>:{$lte:<value>}}db.col.find({"likes":{$lte:50}).pretty()where likes <= 50
supérieur à{<key>:{$gt:<value>}}db.col.find({"likes":{$gt:50}).pretty()where likes > 50
au moins ou égal à{<key>:{$gte:<value>}}db.col.find({"likes":{$gte:50}).pretty()where likes >= 50
different de{<key>:{$ne:<value>}}db.col.find({"likes":{$ne:50}).pretty()where likes != 50
Les valeurs sont dans le tableau{<key>:{$in:[<value1> <value2>,...<valueN>]db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty()Où name correspond à l'un des valeurs :["Raj", "Ram", "Raghu"]
La valeur n'est pas dans le tableau{<clé>:{$nin:<valeur>}}db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty()La valeur de name n'est pas dans le tableau :["Ramu", "Raghav"] ou, ne existe pas du tout

Conditions AND MongoDB

Grammaire

Pour rechercher des documents basés sur la condition "AND", il faut utiliser le mot-clé $and. Voici la syntaxe de base de AND-

>db.mycol.find({ $and: [ { <clé1>:<valeur1>}, { <clé2>:<valeur2>} ] )

Exemple

Le prochain exemple montrera tous les tutoriaux écrits par "tutoriels de base" et avec le titre "MongoDB Aperçu".

> db.mycol.find({$and:[{"by":"tutoriels de base"},{"title": "MongoDB Aperçu"}]}).pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title" : "MongoDB Aperçu",
	"description" : "MongoDB n'est pas une base de données SQL",
	"by" : "tutoriels de base",
	"url" : "https://fr.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"base de données",
		"NoSQL"
	],
	"likes" : 100
}
>

Pour le exemple donné ci-dessus, la clause where équivalente sera' where by = 'tutoriels de base' AND title = 'MongoDB Aperçu' '. Vous pouvez transmettre un nombre quelconque de paires clé-valeur dans la clause find.

Conditions OR MongoDB

Grammaire

Pour rechercher des documents basés sur la condition "OR", il faut utiliser$orMots-clés. VoiciOUSyntaxe de base :

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

Exemple

Le siguiente ejemplo mostrará todos los tutoriales escritos por "tutorials point" o con el título "MongoDB Aperçu".

>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Aperçu"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Aperçu", 
   "description": "MongoDB n'est pas une base de données SQL",
   "by": "base tutorial",
   "url": "http://fr.oldtoolbag.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

MongoDB AND et OR sont utilisés ensemble

Exemple en ligne

Le suivant exemple affichera les documents où likes est supérieur à}}10et pour lesquels le titre est "Présentation de MongoDB" ou "by" est "base tutorial", les documents. Équivalent à la clause WHERE SQL "where likes>10 ET (by = 'base tutorial' OU title = 'Présentation de MongoDB')

>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"},
   {"title": "Présentation MongoDB"}]).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "Présentation de MongoDB", 
   "description": "MongoDB n'est pas une base de données SQL",
   "by": "base tutorial",
   "url": "http://fr.oldtoolbag.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

Condition NOR MongoDB

Grammaire

Pour effectuer une recherche de document avec des conditions NOR, il faut utiliser le mot-clé $nor. VoiciNORSyntaxe de base :

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

Exemple

hypothétiquement, nous sommes dans la collection empDetails a été inséré3un document, comme suit-

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

Le suivant exemple recherchera les documents dont le nom n'est pas "Radhika" et dont le nom n'est pas non plus "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"
}

Condition NOT MongoDB

Grammaire

Pour effectuer une recherche de document avec une condition NOT, vous devez utiliser la clé $not, voiciNOTSyntaxe de base :

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

Exemple en ligne

L'exemple suivant recherchera les documents d'âge inférieur ou égal à25ans" de documents

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