English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الفصل، سنتعلم كيفية استعلام المستندات من مجموعة MongoDB.
للحصول على بيانات مجموعة 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().
> 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 } ] }
إضافة إلى طريقة 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 }
للحصول على المستندات بناءً على بعض الشروط، يمكنك استخدام العمليات التالية.
عملية | تنسيق | مثال | الجملة المشابهة في 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، يجب عليك استخدام الكلمة المفتاحية $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"، يجب استخدام$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" } >
السطر التالي سيظهر الوثائق التي لديها عدد الأعجابات (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، يجب استخدام كلمة المفتاح $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، يجب عليك استخدام كلمة المفتاح $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" }