البحث في MongoDB باستخدام Python

في MongoDB، نستخدم طرق find وfindOne للبحث عن بيانات في المجموعات.

مثلما يستخدم جملة SELECT للبحث عن بيانات في جدول قاعدة بيانات MySQL.

البحث عن عنصر

للإنتقاء البيانات من مجموعة MongoDB، يمكننا استخدام find_one() الطريقة.

find_one() يستعيد الطريقة الم匹配ة الأولى في الاختيار.

مثال

البحث عن الوثيقة الأولى في مجموعة "customers":

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
x = mycol.find_one()
print(x)

تشغيل المثال

البحث عن الكل

للإنتقاء البيانات من جدول MongoDB، يمكننا أيضًا استخدام find() الطريقة.

find() يستعيد الطريقة جميع الم匹配ات المختارة.

find() المعامل الأول هو كائن الاستعلام. في هذا المثال، استخدمنا كائن استعلام فارغ، مما ينتج عنه اختيار جميع الوثائق في المجموعة.

find() لا يقدم هذا الطريقة أي معاملات تقدم نتيجة مشابهة لـ SELECT * في MySQL.

مثال

يستعيد جميع الوثائق في مجموعة "customers" ويطبع كل وثيقة:

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
للمضي قدمًا في x في mycol.find():
  print(x)

تشغيل المثال

يستعيد فقط بعض الحقول

find() الإعدادات الثانية هي وصف الكائن الذي يحتوي على الحقول المضمنة في النتيجة.

هذا المعامل هو اختياري، إذا تم تجاوزه، فإن جميع الحقول ستكون مضمونة في النتائج.

مثال

يُعيد فقط الأسماء والعناوين وليس _ids:

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "_id": 0, "name": 1, "address": 1 }):
  print(x)

تشغيل المثال

لا يُسمح بتحديد القيم 0 و 1 في نفس الكائن في نفس الوقت (ما لم يكن أحد الحقول هو حقل _id). إذا تم تحديد قيمة 0 للجدول، فإن قيم جميع الحقول الأخرى ستكون 1، والعكس صحيح:

مثال

هذا المثال يزيل "address" من النتائج:

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "address": 0 }):
  print(x)

تشغيل المثال

مثال

إذا تم تحديد القيم 0 و 1 في نفس الكائن في نفس الوقت، فإنه سيحدث خطأ (ما لم يكن أحد الحقول هو حقل _id):

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "name": 1, "address": 0 }):
  print(x)