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

استعلام مستند MongoDB

في هذا الفصل، سنتعلم كيفية استعلام المستندات من مجموعة MongoDB.

طريقة find() لمongoDB

للحصول على بيانات مجموعة MongoDB، تحتاج إلى استخدامfind()الطريقة.

النحو

find()النحو الأساسي للطريقة هو كما يلي-

>db.COLLECTION_NAME.find()

find() سيتم عرض جميع المستندات بطريقة غير معمارية.

مثال عبر الإنترنت

افترض أننا قمنا بإنشاء مجموعة تسمى mycol-

> use sampleDB
تحول إلى قاعدة البيانات sampleDB
> db.createCollection("mycol")
{"ok": 1}
>

استخدام طريقة insert() لإدراج 3 مستندات فيها، كما يلي-

> db.mycol.insert([
	{
		title: "MongoDB Overview",
		description: "MongoDB不是SQL数据库",
		by: "基础教程",
		url: "http://ar.oldtoolbag.com",
		tags: ["mongodb", "database", "NoSQL"],
		likes: 100
	},
	{
		title: "NoSQL Database",
		description: "NoSQL数据库没有表",
		by: "基础教程",
		url: "http://ar.oldtoolbag.com",
		tags: ["mongodb", "database", "NoSQL"],
		likes: 20,
		comments: [
			{
				user:"user1",
				message: "My first comment",
				dateCreated: new Date(2013,11,10,2,35),
				like: 0
			}
		]
	}
]

以下方法检索集合中的所有文档-

> db.mycol.find()
{
	"_id": ObjectId("5dd4e2cc0821d3b44607534c"),
	"title": "MongoDB Overview",
	"description": "MongoDB不是SQL数据库",
	"by": "基础教程",
	"url": "http://ar.oldtoolbag.com",
	"tags": [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes": 100
}
{
	"_id": ObjectId("5dd4e2cc0821d3b44607534d"),
	"title": "NoSQL Database",
	"description": "NoSQL 数据库没有表",
	"by": "基础教程",
	"url": "http://ar.oldtoolbag.com",
	"tags": [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes": 20,
	"comments": [
		{
			"user": "user1",
			"message": "My first comment",
			"dateCreated": ISODate("2013-12-09T21:05:00Z"),
			"like": 0
		}
	]
}
>

طريقة pretty()

لعرض النتائج بشكل مرتب، يمكنك استخدام طريقة pretty().

النحو

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

مثال عبر الإنترنت

في هذا المثال، يتم استرجاع جميع المستندات من المجموعة التي تحمل الاسم mycol، وترتيبها بطريقة سهلة القراءة.

> db.mycol.find().pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB ليس قاعدة بيانات SQL",
	"by" : "基础教程",
	"url" : "http://ar.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534d"),
	"title" : "NoSQL Database",
	"description" : "قواعد البيانات NoSQL ليس لها جداول",
	"by" : "基础教程",
	"url" : "http://ar.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 20,
	"comments" : [
		{
			"user" : "user1",
			"message" : "تعليقي الأول",
			"dateCreated" : ISODate("2013-12-09T21:05:00Z"),
			"like" : 0
		}
	]
}

طريقة findOne()

إضافة إلى طريقة find()، هناك أيضًاfindOne()يستعيد هذا الطريقة مستندًا واحدًا فقط.

النحو

> db.COLLECTIONNAME.findOne()

مثال عبر الإنترنت

في هذا المثال، يتم استرجاع المستند الذي يحتوي على عنوان "MongoDB Overview".

> db.mycol.findOne({title: "MongoDB Overview"})
{
	"_id" : ObjectId("5dd6542170fb13eec3963bf0"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB ليس قاعدة بيانات SQL",
	"by" : "基础教程",
	"url" : "http://ar.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}

مقارنة MongoDB برمجيات إدارة قواعد البيانات المرتبطة Where

للحصول على المستندات بناءً على بعض الشروط، يمكنك استخدام العمليات التالية.

عمليةتنسيقمثالالجملة المشابهة في RDBMS
مساوي{<key>:<value>}db.col.find({"by":"تعليميات الأساس"}).pretty()حيث by = 'تعليميات الأساس'
أصغر{<key>:{$lt:<value>}}db.col.find({"likes":{$lt:50}}).pretty()حيث likes < 50
أصغر أو مساوي{<key>:{$lte:<value>}}db.col.find({"likes":{$lte:50}}).pretty()حيث likes <= 50
أكبر{<key>:{$gt:<value>}}db.col.find({"likes":{$gt:50}}).pretty()حيث likes > 50
أكبر أو مساوي{<key>:{$gte:<value>}}db.col.find({"likes":{$gte:50}}).pretty()حيث likes >= 50
غير متساوي{<key>:{$ne:<value>}}db.col.find({"likes":{$ne:50}}).pretty()حيث likes != 50
القيمة موجودة في المجموعة{<key>:{$in:[<value1>, <value2>,……<valueN>]}}db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty()حيث تتطابق name مع أي قيمة من المجموعة :["Raj", "Ram", "Raghu"]
القيمة ليست موجودة في المجموعة{<key>:{$nin:<value>}}db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty()قيمة name ليست موجودة في المجموعة :["Ramu", "Raghav"] أو لا توجد على الإطلاق

شرط AND في MongoDB

النحو

للحصول على استعلامات المستندات بناءً على شرط AND، يجب عليك استخدام الكلمة المفتاحية $and. إليك الجملة الأساسية لـ AND:

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

مثال

السطر التالي سيظهر جميع الدروس التي كتبت بواسطة "التعليمات الأساسية" و العنوان هو "MongoDB Overview".

> db.mycol.find({$and:[{"by":"基础教程"},{"title": "MongoDB Overview"}]}).pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB ليس قاعدة بيانات SQL",
	"by" : "基础教程",
	"url" : "https://ar.oldtoolbag.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
>

جملة where المناظرة للسطر المقدم ستبدو كالتالي' where by = '基础教程' AND title = 'MongoDB Overview' 'يمكنك إرسال أي عدد من أزواج المفاتيح، القيم في جملة find.

شرط OR في MongoDB

النحو

للتحقق من الوثائق بناءً على شرط "OR"، يجب استخدام$orكلمات المفتاح. هناORالنحو الأساسي:

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

مثال

السطر التالي سيظهر جميع الدروس التي كتبت بواسطة "tutorials point" أو العنوان هو "MongoDB Overview".

>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Overview", 
   "description": "MongoDB ليست قاعدة بيانات SQL",
   "by": "تعليمات الأساسيات",
   "url": "http://ar.oldtoolbag.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

MongoDB AND و OR معًا يستخدم

مثال عبر الإنترنت

السطر التالي سيظهر الوثائق التي لديها عدد الأعجابات (likes) أكبر من 10 و العنوان هو "MongoDB概述" أو "by" هو "التعليمات الأساسية". يكافئ على جملة where في SQL 'where likes>10 AND (by = '基础教程' OR title = 'MongoDB概述')'

>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"},
   {"title": "مقدمة إلى MongoDB"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "مقدمة إلى MongoDB", 
   "description": "MongoDB ليست قاعدة بيانات SQL",
   "by": "تعليمات الأساسيات",
   "url": "http://ar.oldtoolbag.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

شرط NOR في MongoDB

النحو

للحصول على مستندات البحث بناءً على شرط NOR، يجب استخدام كلمة المفتاح $nor. وهو ما يليNORالنحو الأساسي:

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

مثال

افترض أننا في مجموعة empDetails تم إدراج 3 مستندات، وهي كالتالي-

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

في هذا المثال، سيتم استرجاع المستندات التي ليس فيها اسم "Radhika" وليس فيها اسم "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"
}

شرط NOT في MongoDB

النحو

للحصول على مستندات البحث بناءً على شرط NOT، يجب عليك استخدام كلمة المفتاح $not، وهو ما يليNOTالقواعد الأساسية:

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

مثال عبر الإنترنت

هذا المثال سيرجع المستندات التي لا تتجاوز العمر 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"
}