پیدا کردن (Find)
اینجا با «پیدا کردن در مونگو» آشنا می شویم. در MongoDB، «کالکشن (Collection)» مثل جدول است. «سند (Document)» مثل یک ردیف است. و «کوئری (Query)» یعنی شرط جستجو. با پایتون و PyMongo، داده ها را راحت می خوانیم.
find_one؛ اولین سند مطابق
تابع find_one() فقط اولین سند مطابق را برمی گرداند. مثل این است که در صف، فقط نفر اول را بخوانیم.
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
x = mycol.find_one()
print(x)
find؛ همه سندها
تابع find() همه سندهای مطابق را می دهد. اگر کوئری خالی باشد، یعنی «همه را بده»؛ مثل SELECT * در SQL.
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find():
print(x)
نکته: بدون پارامتر در find() همانند SELECT * است.
فقط بعضی فیلدها (Projection)
«پراجکشن (Projection)» یعنی تعیین فیلدهای خروجی. مقدار 1 یعنی «نمایش بده». مقدار 0 یعنی «حذف کن». معمولاً 0 و 1 را باهم قاطی نکن.
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 استثناء دارد.
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
کد زیر خطا می دهد؛ چون 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)
گام های سریع برای «پیدا کردن در مونگو»
- کتابخانه PyMongo را نصب کن.
- به سرور MongoDB وصل شو.
- کالکشن را انتخاب کن.
- برای یک مورد:
find_one()را صدا بزن. - برای همه موارد: از
find()استفاده کن. - با «پراجکشن» فیلدهای خروجی را تنظیم کن.
برای ادامه پیدا کردن در مونگو و ساخت شرط ها، این صفحه را ببین. برای درج اولیه داده هم درج در MongoDB را مرور کن.
جمع بندی سریع
find_one()فقط اولین سند را برمی گرداند.find()لیست کامل نتایج را می دهد.- کوئری خالی یعنی «همه را برگردان».
- پراجکشن با 0 یا 1 فیلدها را کنترل می کند.
- 0 و 1 را قاطی نکن؛
_idاستثناء است.