NodeJs بالعربي
NodeJs بالعربي
بالعربى
مقدمة قصيرة
بسم اهلل الرحمن الرحيم
النود جى اس بختصار هو اطار عمل مجانى مفتوح المصدر تمت كتابة
بلغة السي بالص يعمل على جميع المنصات واالنظمة المختلفة مثل
ويندوذ ولينكس وماك وغيرها متعدد االستخدامات وهذا االطار بمثابة
استقالليه لجافاسربت ومن مميزات نود جى اس تصنيفة بانة اسرع
ريكويست فى العالم يصل الى 600ريكويست فى الثانية وهذا اسرع من
مثال
;)'var http = require('http
يمكن أن تكون المهمة الشائعة لخادم الويب هي فتح ملف على الخادم وإعادة
المحتوى إلى العميل .وهذا يتم فى سرعة كبيرة جدا مقارنتا بالخوادم االخرى
:مع طلب الملف ASPأو PHPإليك كيفية تعامل
.يرسل المهمة إلى نظام ملفات الكمبيوتر1.
.ينتظر بينما يفتح نظام الملفات ويقرأ الملف2.
.إرجاع المحتوى إلى العميل3.
.على استعداد للتعامل مع الطلب التالي4.
يقوم بتشغيل برمجة أحادية الترابط وغير محظورة وغير متزامنة ،وهي فعالة
.وسريعة ج ًدا في استخدام الذاكرة
يمكن لـ نود جى اس إنشاء محتوى صفحة ديناميكي•
يمكن لـ نود جى اس إنشاء الملفات وفتحها وقراءتها وكتابتها وحذفها •
وإغالقها على الخادم
يمكن لـ نود جى اس جمع بيانات النموذج•
يمكن لـ نود جى اس إضافة أو حذف أو تعديل البيانات في قاعدة •
البيانات
ابدء االن
فلنحاول عرض،بمجرد قيامك بتنزيل وتثبيته على جهاز الكمبيوتر الخاص بك
"Abo Habib Al_Hosiny !" في متصفح الويب.
file_Abo_Habib.js
واجهة خط األوامر
"Command Lineيجب أن يتم تشغيل ملفات نود جى اس في برنامج
.بجهاز الكمبيوتر الخاص بك "Interface
تعتمد كيفية فتح واجهة سطر األوامر على جهاز الكمبيوتر الخاص بك على نظام
اضغط على زر البداية وابحث عن Windows،التشغيل .بالنسبة لمستخدمي
.في حقل البحث "" "cmdموجه األوامر" ،أو ببساطة اكتب
يجب "file_Abo_Habib.js"،انتقل إلى المجلد الذي يحتوي على الملف
:أن تبدو نافذة واجهة سطر األوامر كما يلي
_>C:\Users\Your Name
"file_Abo_Habib.js":بدء
تضمين الوحدات
:الدالة التي تحمل اسم الوحدة )( requireلتضمين وحدة ،استخدم
إنشاء الوحدات
.يمكنك إنشاء الوحدات النمطية وإدراجها بسهولة في تطبيقاتك
مثال
{ )( exports.myDateTime = function
;)(return Date
;}
مثال
وهذا يعني أن الوحدة موجودة في نفس،لتحديد موقع الوحدة/. الحظ أننا نستخدم
المجلد مثل ملف نود جى اس.
" احفظ الكود أعاله في ملف يسمىHabib_module.js"، وابدأ الملف:
بدءHabib_module.js:
فسوف ترى،إذا قمت بإتباع نفس الخطوات على جهاز الكمبيوتر الخاص بك
نفس النتيجة كما في المثال:
http://localhost:8080
HTTPوحدة
والتي تسمح لـ نود HTTP،يحتوي نود جى اس على وحدة مدمجة تسمى
(HTTP).جى اس بنقل البيانات عبر بروتوكول نقل النص التشعبي
:الطريقة)( requireاستخدم HTTP،لتضمين وحدة
مثال
;)'var http = require('http
بدء المثال
فسوف ترى،إذا قمت بإتباع نفس الخطوات على جهاز الكمبيوتر الخاص بك
نفس النتيجة كما في المثال:
http://localhost:8080
مثال
;)'var http = require('http
{ )http.createServer(function (req, res
;)}'res.writeHead(200, {'Content-Type': 'text/html
;)! res.write('Abo Habib Al_Hosiny
;)(res.end
;)}).listen(8080
بدء المثال
فيجب أن ترى،إذا اتبعت نفس الخطوات على جهاز الكمبيوتر الخاص بك
نتيجتين مختلفتين عند فتح هذين العنوانين:
http://localhost:8080/summer
/summer
/winter
مثال
بدءAbo_Habib_querystring.js:
C:\Users\Your Name>node
Abo_Habib_querystring.js
العنوان:
http://localhost:8080/?year=2017&month=July
2017 July
;)'var fs = require('fs
قراءة الملفات
لقراءة الملفات الموجودة على جهاز )( fs.readFileيتم استخدام الطريقة
.الكمبيوتر الخاص بك
Abo_Habib_File.html
<html>
<body>
<h1>My Header</h1>
<p>My paragraph.</p>
</body>
</html>
مثال
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
fs.readFile('Abo_Habib_File.html', function(err,
data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
return res.end();
});
}).listen(8080);
Abo_Habib_readfile.js:بدء
إذا قمت بإتباع نفس الخطوات على جهاز الكمبيوتر الخاص بك ،فسوف ترى
:نفس النتيجة كما في المثال
http://localhost:8080
إنشاء ملفات
:تحتوي وحدة نظام الملفات على طرق إلنشاء ملفات جديدة
)(•fs.appendFile
)(•fs.open
)(•fs.writeFile
بإلحاق محتوى محدد بملف .إذا كان الملف )( fs.appendFileتقوم الطريقة
:غير موجود ،سيتم إنشاء الملف
var fs = require('fs');
fs.appendFile('Abo_Habib_File1.txt', 'Hello
content!', function (err) {
if (err) throw err;
console.log('Saved!');
});
مثال
var fs = require('fs');
مثال
var fs = require('fs');
fs.writeFile('Abo_Habib_File3.txt', 'Hello
content!', function (err) {
if (err) throw err;
console.log('Saved!');
});
مثال
var fs = require('fs');
var fs = require('fs');
fs.writeFile('Abo_Habib_File3.txt', 'This is my
text', function (err) {
if (err) throw err;
console.log('Replaced!');
});
حذف الملفات
استخدم، لحذف ملف باستخدام وحدة نظام الملفاتfs.unlink() الطريقة.
الطريقةfs.unlink()تحذف الملف المحدد:
مثال
" حذفAbo_Habib_File2.txt":
مثال
var fs = require('fs');
fs.rename('Abo_Habib_File1.txt', 'Al_Hosiny_File.txt'
, function (err) {
if (err) throw err;
URLوحدة
.بتقسيم عنوان الويب إلى أجزاء قابلة للقراءة URLتقوم وحدة
:الطريقة )( requireاستخدم URL،لتضمين وحدة
مثال
قم بإنشاء ملفين بتنسيقhtml واحفظهما في نفس المجلد مثل ملفات نود جى
اس.
Summer.html
Winter.html
<!DOCTYPE html>
<html>
<body>
<h1>Winter</h1>
<p>I love the snow!</p>
</body>
</html>
قم بإنشاء ملف نود جى اس الذي يفتح الملف المطلوب ويعيد المحتوى إلى
404 قم بإلقاء خطأ، إذا حدث أي خطأ.العميل:
Abo_Habib_fileserver.js:
بدءAbo_Habib_fileserver.js:
فيجب أن ترى،إذا اتبعت نفس الخطوات على جهاز الكمبيوتر الخاص بك
نتيجتين مختلفتين عند فتح هذين العنوانين:
ما هي الحزمة؟
تحتوي الحزمة الموجودة في نود جى اس على كافة الملفات التي تحتاجها
.للوحدة النمطية
.يمكنك تضمينها في مشروعك JavaScriptالوحدات هي مكتبات
باستخدام الحزمة
.بمجرد تثبيت الحزمة ،فهي جاهزة لالستخدام
قم بتضمين الحزمة "ذات األحرف الكبيرة" بنفس الطريقة التي تقوم بها بتضمين
:أي وحدة أخرى
مثال
var http = require('http');
var uc = require('upper-case');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(uc.upperCase("Abo Habib Al_Hosiny !!"));
res.end();
}).listen(8080);
فسوف ترى،إذا قمت بإتباع نفس الخطوات على جهاز الكمبيوتر الخاص بك
نفس النتيجة كما في المثال:
http://localhost:8080
مثال
;)'var fs = require('fs
;)'var rs = fs.createReadStream('./Abo_Habib_File.txt
{ )( rs.on('open', function
;)'console.log('The file is open
;)}
EventEmitterكائن
EventEmitter.يمكنك تعيين معالجات األحداث لألحداث باستخدام كائن
".في المثال أدناه قمنا بإنشاء دالة سيتم تنفيذها عند إطالق حدث "الصراخ
.الطريقة)( emitإلطالق حدث ما ،استخدم
مثال
;)'var events = require('events
;)(var eventEmitter = new events.EventEmitter
مثال
مثال
مثال
مثال
;)'var nodemailer = require('nodemailer
var mailOptions = {
from: '[email protected]',
to: '[email protected]',
subject: 'Sending Email with node js‘
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error,
info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
وهذا كل شيء! اآلن خادمك قادر على إرسال رسائل البريد اإللكتروني.
var mailOptions = {
from: '[email protected]',
to: '[email protected], [email protected]
om',
subject: 'Sending Email usin ‘
text: 'That was easy!'
}
إرسالHTML
إلرسال نص بتنسيقHTML استخدم خاصية،" في بريدك اإللكترونيhtml"
" بدال ً من خاصيةtext":
مثال
var mailOptions = {
from: '[email protected]',
إنشاء اتصال
.ابدأ بإنشاء اتصال بقاعدة البيانات
MySQL .استخدم اسم المستخدم وكلمة المرور من قاعدة بيانات
Abo_Habib_db_connection.js
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
" قم بتشغيلAbo_Habib_db_connection.js"
C:\Users\Your Name>node
Abo_Habib_db_connection.js
Connected!
{ )con.connect(function(err
;if (err) throw err
;)"!console.log("Connected
{ )con.query(sql, function (err, result
;if (err) throw err
;)console.log("Result: " + result
;)}
;)}
بيانات
Abo Habib Al_Hosiny Node.js 53
إنشاء قاعدة بيانات
إلنشاء قاعدة بيانات فيMySQL، "استخدم عبارة "إنشاء قاعدة بيانات:
مثال
" قم بإنشاء قاعدة بيانات باسمdatabase_Abo_Habib":
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
con.query("CREATE DATABASE
database_Abo_Habib", function (err, result) {
if (err) throw err;
console.log("Database created");
" تشغيلAbo_Habib_create_db.js"
Connected!
Database created
إنشاء جدول
إلنشاء جدول فيMySQL، " استخدم عبارةCREATE TABLE".
مثال
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "CREATE TABLE customers (name
VARCHAR(255), address VARCHAR(255))";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Table created");
});
});
C:\Users\Your Name>node
Abo_Habib_create_table.js
!Connected
Table created
المفتاح األساسي
أيضا إنشاء عمود يحتوي على مفتاح فريد لكل
عند إنشاء جدول ،يجب عليك ً
.سجل
"INTيمكن القيام بذلك عن طريق تعريف عمود باسم
والذي سيقوم بإدراج رقم فريد "AUTO_INCREMENT PRIMARY KEY
ابتداء من ،1وزيادة بمقدار واحد لكل سجل
ً .لكل سجل.
مثال
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "CREATE TABLE customers (id INT
AUTO_INCREMENT PRIMARY KEY, name
VARCHAR(255), address VARCHAR(255))";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Table created");
});
});
مثال
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "ALTER TABLE customers ADD COLUMN id
INT AUTO_INCREMENT PRIMARY KEY";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Table altered");
});
});
مثال
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "INSERT INTO customers (name, address)
VALUES ('Company Inc', 'Giza 37')";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
});
!Connected
1 record inserted
مثال
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "INSERT INTO customers (name, address)
VALUES ?";
var values = [
['Amro', 'Giza 71'],
['HAbib', 'Al_Badrashen 4'],
['Mohamed', 'Apple st 652'],
['Ahmed', 'ElSudeya 21'],
['Abo_Ali', 'Omar 345'],
['Sandy', 'Ocean blvd 2'],
['Abo_saly', 'Green Grass 1'],
['Fatma', 'Sky st 331'],
['Susan', 'One way 98'],
['Sameer', 'Yellow Garden 2'],
['Ben', 'Park Lane 38'],
['Osman', 'Central st 954'],
['ghaled', 'Main Road 989'],
['Mahmoud', 'Sideway 1633']
" قم بتشغيلAbo_Habib_db_insert_multiple.js"
C:\Users\Your Name>node
Abo_Habib_db_insert_multiple.js
Connected!
Number of records inserted: 14
كائن النتيجة
يتم إرجاع كائن النتيجة،عند تنفيذ استعالم.
{
fieldCount: 0,
affectedRows: 14,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '\'Records:14 Duplicated: 0 Warnings: 0',
protocol41: true,
changedRows: 0
}
مثال
)console.log(result.affectedRows
14
مثال
con.connect(function(err) {
if (err) throw err;
var sql = "INSERT INTO customers (name, address)
VALUES ('Michelle', 'Blue Village 1')";
" قم بتشغيلAbo_Habib_db_insert_id.js"
C:\Users\Your Name>node
Abo_Habib_db_insert_id.js
MySQL تابع
مثال
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM
customers", function (err, result, fields) {
if (err) throw err;
console.log(result);
});
});
" قم بتشغيلAbo_Habib_db_select.js"
مثال
con.connect(function(err) {
if (err) throw err;
" قم بتشغيلAbo_Habib_db_select2.js"
كائن النتيجة
كما ترون من نتيجة المثال أعاله ،فإن الكائن الناتج هو مصفوفة تحتوي على
.كل صف ككائن
إلرجاع عنوان السجل الثالث على سبيل المثال ،ما عليك سوى الرجوع إلى
:خاصية عنوان كائن المصفوفة الثالثة
مثال
;)console.log(result[2].address
Apple st 652
مثال
con.connect(function(err) {
if (err) throw err;
con.query("SELECT name, address FROM
customers", function (err, result, fields) {
if (err) throw err;
console.log(fields);
});
});
" قم بتشغيلAbo_Habib_db_select_fields.js"
C:\Users\Your Name>node
Abo_Habib_db_select_fields.js
[
{
catalog: 'def',
db: 'database_Abo_Habib',
table: 'customers',
orgTable: 'customers',
name: 'name',
orgName: 'name',
charsetNr: 33,
length: 765,
type: 253,
flags: 0,
decimals: 0,
default: undefined,
zeroFill: false,
protocol41: true
},
كائن الحقول عبارة عن مصفوفة تحتوي على،كما ترون من نتيجة المثال أعاله
معلومات حول كل حقل ككائن.
ما عليك سوى الرجوع إلى خاصية،إلرجاع اسم الحقل الثاني على سبيل المثال
اسم عنصر المصفوفة الثانية:
مثال
console.log(fields[1].name);
address
MySQL البحث
حدد مع مرشح
يمكنك تصفية التحديد باستخدام عبارة،عند تحديد السجالت من جدول
"WHERE":
مثال
" قم بتشغيلAbo_Habib_db_where.js"
[
{ id: 11, name: 'Ben', address: 'Park Lane 38'}
]
' لتمثيل صفر أو حرف واحد أو عدة أحرف%' استخدم حرف البدل:
مثال
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM customers WHERE
address LIKE 'S%'", function (err, result) {
if (err) throw err;
console.log(result);
" "Abo_Habib_db_where_s.jsتشغيل
C:\Users\Your Name>node
Abo_Habib_db_where_s.js
[
{ id: 8, name: 'Fatma', address: 'Sky st 331'},
}'{ id: 14, name: 'Mahmoud', address: 'Sideway 1633
]
مثال
مثال
بهذا، فإن المصفوفة تحتوي على قيم متعددة،إذا كان لديك عدة عناصر نائبة
الترتيب:
مثال
فرز النتيجة
.لفرز النتيجة بترتيب تصاعدي أو تنازلي ORDER BYاستخدم عبارة
بفرز النتيجة تصاعديًا بشكل ORDER BYتقوم الكلمة األساسية
DESC.افتراضي .لفرز النتيجة بترتيب تنازلي ،استخدم الكلمة األساسية
مثال
" قم بتشغيلAbo_Habib_db_orderby.js"
[
{ id: 3, name: 'Mohamed', address: 'Apple st 652'},
{ id: 11, name: 'Ben', address: 'Park Lane 38'},
{ id: 7, name: 'Abo_saly', address: 'Green Grass 1'},
{ id: 13, name: 'ghaled', address: 'Main Road 989'},
{ id: 4, name: 'Ahmed', address: 'ElSudeya 21'},
{ id: 1, name: 'Amro', address: 'Higheay 71'},
مثال
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM customers ORDER BY
name DESC", function (err, result) {
if (err) throw err;
console.log(result);
});
});
" قم بتشغيلAbo_Habib_db_orderby_desc.js"
C:\Users\Your Name>node
Abo_Habib_db_orderby_desc.js
حذف جدول
" يمكنك حذف جدول موجود باستخدام عبارةDROP TABLE":
con.connect(function(err) {
if (err) throw err;
var sql = "DROP TABLE customers";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Table deleted");
});
});
C:\Users\Your Name>node
Abo_Habib_db_drop_table.js
Table deleted
مثال
con.connect(function(err) {
if (err) throw err;
var sql = "DROP TABLE IF EXISTS customers";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
});
" قم بتشغيلAbo_Habib_db_drop_table_if.js"
C:\Users\Your Name>node
Abo_Habib_db_drop_table_if.js
{
fieldCount: 0,
affectedRows: 0,
insertId: 0,
{
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverstatus: 2,
warningCount: 1,
message: '',
protocol41: true,
changedRows: 0
}
تحديث الجدول
" يمكنك تحديث السجالت الموجودة في الجدول باستخدام عبارةUPDATE":
con.connect(function(err) {
if (err) throw err;
var sql = "UPDATE customers SET address =
'Canyon 123' WHERE address = 'Omar 345'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result.affectedRows + " record(s)
updated");
});
});
كائن النتيجة
.عند تنفيذ استعالم ،يتم إرجاع كائن النتيجة
.يحتوي كائن النتيجة على معلومات حول كيفية تأثير االستعالم على الجدول
:يبدو الكائن الناتج الذي تم إرجاعه من المثال أعاله كما يلي
{
fieldCount: 0,
affectedRows: 1,
مثال
)console.log(result.affectedRows
1
الحد من النتيجة
يمكنك تحديد عدد السجالت التي يتم إرجاعها من االستعالم ،باستخدام عبارة
"LIMIT":
con.connect(function(err) {
if (err) throw err;
var sql = "SELECT * FROM customers LIMIT 5";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
});
[
{ id: 1, name: 'Amro', address: 'Giza 71'},
{ id: 2, name: 'HAbib', address: 'Al_Badrashen 4'},
{ id: 3, name: 'Mohamed', address: 'Apple st 652'},
{ id: 4, name: 'Ahmed', address: 'ElSudeya 21'},
{ id: 5, name: 'Abo_Ali', address: 'Omar 345'}
]
con.connect(function(err) {
if (err) throw err;
var sql = "SELECT * FROM customers LIMIT 5
OFFSET 2";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
});
" تشغيلAbo_Habib_db_offset.js"
[
{ id: 3, name: 'Mohamed', address: 'Apple st 652'},
{ id: 4, name: 'Ahmed', address: 'ElSudeya 21'},
{ id: 5, name: 'Abo_Ali', address: 'Omar 345'},
{ id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
{ id: 7, name: 'Abo_saly', address: 'Green Grass 1'}
]
con.connect(function(err) {
if (err) throw err;
var sql = "SELECT * FROM customers LIMIT 2, 5";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
});
المستخدمين
[
{ id: 1, name: 'Amro', favorite_product: 154},
{ id: 2, name: 'HAbib', favorite_product: 154},
{ id: 3, name: 'Mohamed', favorite_product: 155},
{ id: 4, name: 'Ahmed', favorite_product:},
{ id: 5, name: 'Abo_Ali', favorite_product:}
]
منتجات
[
{ id: 154, name: 'Ebraheem ' },
{ id: 155, name: 'Hamza' },
{ id: 156, name: 'Yousef }
]
مثال
con.connect(function(err) {
if (err) throw err;
var sql = "SELECT users.name AS user,
products.name AS favorite FROM users JOIN
products ON users.favorite_product = products.id";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
});
[
{ user: 'Amro', favorite: 'Ebraheem ' },
{ user: 'HAbib', favorite: 'Ebraheem ' },
} '{ user: 'Mohamed', favorite: 'Hamza
]
كما ترون من النتيجة أعاله ،يتم إرجاع السجالت المتطابقة في كال الجدولين
.فقط
مثال
مثال
[
{ user: 'Amro', favorite: 'Ebraheem ' },
{ user: 'HAbib', favorite: 'Ebraheem ' },
{ user: 'Mohamed', favorite: 'Hamza' },
{ user: null, favorite: 'Yousef }
]
مثال
C:\Users\Your Name>node
Abo_Habib_create_mongo_db.js
!Database created
!ال يتم إنشاء قاعدة بيانات حتى تحصل على المحتوى MongoDB،هام :في
حتى تقوم بإنشاء مجموعة (جدول) ،مع مستند واحد على MongoDBينتظر
.األقل (سجل) قبل أن يقوم فعليًا بإنشاء قاعدة البيانات (والمجموعة)
نود جى اس
إنشاء مجموعة MongoDB
مثال
C:\Users\Your Name>node
Abo_Habib_mongodb_createcollection.js
!Collection created
!ال يتم إنشاء المجموعة حتى تحصل على المحتوى MongoDB،هام :في
إدراج في المجموعة
في مجموعة ،نستخدم MongoDB،إلدراج سجل ،أو مستند كما يطلق عليه في
insertOne().الطريقة
مثال
dbo.collection("customers").insertOne(myobj, functi
on(err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close();
C:\Users\Your Name>node
Abo_Habib_mongodb_insert.js
مثال
dbo.collection("customers").insertMany(myobj, func
tion(err, res) {
if (err) throw err;
console.log("Number of documents inserted: " +
res.insertedCount);
db.close();
});
});
" قم بتشغيلAbo_Habib_mongodb_insert_multiple.js"
C:\Users\Your Name>node
Abo_Habib_mongodb_insert_multiple.js
والتي سوف تعطيك هذه النتيجة:
{
result: { ok: 1, n: 14 },
ops: [
{ name: 'Amro', address: 'Giza 71', _id:
58fdbf5c0ef8a50b4cdd9a84 },
{ name: 'HAbib', address: 'Al_Badrashen 4', _id:
58fdbf5c0ef8a50b4cdd9a85 },
{ name: 'Mohamed', address: 'Apple st 652', _id:
58fdbf5c0ef8a50b4cdd9a86 },
{ name: 'Ahmed', address: 'ElSudeya 21', _id:
58fdbf5c0ef8a50b4cdd9a87 },
{ name: 'Abo_Ali', address: 'Omar 345', _id:
58fdbf5c0ef8a50b4cdd9a88 },
{ name: 'Sandy', address: 'Ocean blvd 2', _id:
58fdbf5c0ef8a50b4cdd9a89 },
{ name: 'Abo_saly', address: 'Green Grass 1', _id:
58fdbf5c0ef8a50b4cdd9a8a },
{ name: 'Fatma', address: 'Sky st 331', _id:
58fdbf5c0ef8a50b4cdd9a8b },
{ name: 'Susan', address: 'One way 98', _id:
58fdbf5c0ef8a50b4cdd9a8c },
)console.log(res.insertedCount
14
_idالحقل
حقال ً لك ويعين معرفًا فري ًدا لكل MongoDBفسيضيف _id،إذا لم تحدد حقال ً
.مستند
يتم تحديد أي حقل ،وكما ترون من الكائن الناتج ،قام _idفي المثال أعاله لم
.بتعيين معرف _ فريد لكل مستند MongoDB
:فيجب أن تكون القيمة فريدة لكل مستند _id،إذا قمت بتحديد الحقل
مثال
dbo.collection("products").insertMany(myobj, functi
on(err, res) {
if (err) throw err;
console.log(res);
db.close();
});
});
" قم بتشغيلAbo_Habib_mongodb_insert_id.js"
{
result: { ok: 1, n: 3 },
ops: [
{ _id: 154, name: 'Ebraheem },
{ _id: 155, name: 'Sameh },
{ _id: 156, name: 'Hosaam } ],
insertedCount: 3,
insertedIds: [
154,
155,
156 ]
}
البحثMongoDB
فيMongoDB نستخدم طريقتيfind وfindOne للعثور على البيانات
في مجموعة.
مثال
dbo.collection("customers").findOne({}, function(err
{ ), result
" قم بتشغيلAbo_Habib_mongodb_findone.js"
C:\Users\Your Name>node
Abo_Habib_mongodb_findone.js
Company Inc.
اوجد كل النتائج
لتحديد البيانات من جدول فيMongoDB، أيضا استخدام
ً يمكننا
هذهfind()الطريقة.
تقوم الطريقةfind()بإرجاع كافة التكرارات في التحديد.
مثال
" قم بتشغيلAbo_Habib_mongodb_find.js"
C:\Users\Your Name>node
Abo_Habib_mongodb_find.js
[
{ _id: 58fdbf5c0ef8a50b4cdd9a84 , name: 'Amro',
address: 'Giza 71'},
{ _id: 58fdbf5c0ef8a50b4cdd9a85 , name: 'HAbib',
address: 'Al_Badrashen 4'},
{ _id: 58fdbf5c0ef8a50b4cdd9a86 , name:
'Mohamed', address: 'Apple st 652'},
{ _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Ahmed',
address: 'ElSudeya 21'},
{ _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Abo_Ali',
address: 'Omar 345'},
{ _id: 58fdbf5c0ef8a50b4cdd9a89 , name: 'Sandy',
address: 'Ocean blvd 2'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8a , name: 'Abo_saly',
address: 'Green Grass 1'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8b , name: 'Fatma',
address: 'Sky st 331'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8c , name: 'Susan',
جد بعض
المعلمة الثانية للطريقةfind() هيprojection الكائن الذي يصف الحقول
التي سيتم تضمينها في النتيجة.
سيتم تضمين جميع الحقول في النتيجة، وإذا تم حذفها،هذه المعلمة اختيارية.
مثال
" قم بتشغيلAbo_Habib_mongodb_find_fields.js"
C:\Users\Your Name>node
Abo_Habib_mongodb_find_fields.js
في نفس الكائن1 و0 إال إذا كان أحد الحقول ( غير مسموح لك بتحديد القيمتين
_ هو حقلid). فإن كافة الحقول األخرى،0 إذا قمت بتحديد حقل بالقيمة
والعكس صحيح،1 تحصل على القيمة:
مثال
مثال
مثال
هذا المثال سيعطيك نفس نتيجة المثال األول؛ إرجاع جميع الحقول باستثناء
_ حقلid:
مثال
في نفس الكائن1 و0 إال إذا كان( ستحصل على خطأ إذا قمت بتحديد القيمتين
_ أحد الحقول هو حقلid):
مثال
;)console.log(result[2].address
Apple st 652
MongoDBاستعالم
مثال
dbo.collection("customers").find(query).toArray(fun
ction(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
C:\Users\Your Name>node
Abo_Habib_mongodb_query.js
[
{ _id: 58fdbf5c0ef8a50b4cdd9a8e , name: 'Ben',
} 'address: 'Park Lane 38
]
"S"،للعثور فقط على المستندات التي يبدأ فيها حقل "العنوان" بالحرف
/^S/:استخدم التعبير العادي
dbo.collection("customers").find(query).toArray(fun
ction(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
" قم بتشغيلAbo_Habib_mongodb_query_s.js"
[
{ _id: 58fdbf5c0ef8a50b4cdd9a8b , name: 'Fatma',
address: 'Sky st 331' },
{ _id: 58fdbf5c0ef8a50b4cdd9a91 , name:
} ''Mahmoud', address: 'Sideway 1633
]
مثال
dbo.collection("customers").find().sort(mysort).toAr
ray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
" تشغيلAbo_Habib_sort.js"
ترتيب تنازلي
في كائن الفرز للفرز تنازليًا1- استخدم القيمة.
{ 1 : } االسم// تصاعدي
{ 1- : } االسم// تنازلي
مثال
dbo.collection("customers").find().sort(mysort).toAr
ray(function(err, result) {
" قم بتشغيلAbo_Habib_sort_desc.js"
[
{ _id: 58fdbf5c0ef8a50b4cdd9a8f, name: 'Osman',
address: 'Central st 954'},
{ _id: 58fdbf5c0ef8a50b4cdd9a91, name:
'Mahmoud', address: 'Sideway 1633'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8d, name: 'Sameer',
address: 'Yellow Garden 2'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8c, name: 'Susan',
address: 'One way 98'},
{ _id: 58fdbf5c0ef8a50b4cdd9a89, name: 'Sandy',
address: 'Ocean blvd 2'},
" تشغيلAbo_Habib_sort.js"
[
{ _id: 58fdbf5c0ef8a50b4cdd9a86, name:
'Mohamed', address: 'Apple st 652'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8e, name: 'Ben',
address: 'Park Lane 38'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8a, name: 'Abo_saly',
address: 'Green Grass 1'},
{ _id: 58fdbf5c0ef8a50b4cdd9a90, name: 'ghaled',
address: 'Main Road 989'},
{ _id: 58fdbf5c0ef8a50b4cdd9a87, name: 'Ahmed',
address: 'ElSudeya 21'},
{ _id: 58fdbf5c0ef8a50b4cdd9a84, name: 'Amro',
address: 'Giza 71'},
{ _id: 58fdbf5c0ef8a50b4cdd9a88, name: 'Abo_Ali',
address: 'Omar 345'},
{ _id: 58fdbf5c0ef8a50b4cdd9a85, name: 'HAbib',
address: 'Al_Badrashen 4'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8b, name: 'Fatma',
address: 'Sky st 331'},
{ _id: 58fdbf5c0ef8a50b4cdd9a89, name: 'Sandy',
address: 'Ocean blvd 2'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8c, name: 'Susan',
address: 'One way 98'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8d, name: 'Sameer',
address: 'Yellow Garden 2'},
{ _id: 58fdbf5c0ef8a50b4cdd9a91, name:
'Mahmoud', address: 'Sideway 1633'},
حذف المجموعة
أو مجموعة كما يطلق عليها في، يمكنك حذف جدولMongoDB، باستخدام
هذهdrop()الطريقة.
تأخذ الطريقةdrop() دالة رد اتصال تحتوي على كائن الخطأ ومعلمة النتيجة
وإال فإنها تُرجع خطأ،صحيحا إذا تم حذف المجموعة بنجاح
ً التي تُرجع.
مثال
" تشغيلAbo_Habib_drop.js"
Collection deleted
db.dropCollection
ً يمكنكdropCollection())الطريقة لحذف جدول (مجموعة.
أيضا استخدام
" قم بتشغيلAbo_Habib_dropcollection.js"
Collection deleted
MongoDBتحديث
تحديث الوثيقة
باستخدام MongoDBيمكنك تحديث سجل أو مستند كما يطلق عليه في
updateOne().الطريقة
هي كائن استعالم يحدد المستند الذي )( updateOneالمعلمة األولى للطريقة
.سيتم تحديثه
مالحظة :إذا عثر االستعالم على أكثر من سجل واحد ،فسيتم تحديث التواجد
.األول فقط
dbo.collection("customers").updateOne(myquery, ne
wvalues, function(err, res) {
if (err) throw err;
console.log("1 document updated");
db.close();
});
});
C:\Users\Your Name>node
Abo_Habib_update_one.js
1 document updated
مثال
...
var myquery = { address: "Omar 345" };
var newvalues = { $set: { address: "Canyon 123" } };
dbo.collection("customers").updateOne(myquery, ne
wvalues, function(err, res) {
...
مثال
C:\Users\Your Name>node
Abo_Habib_update_many.js
كائن النتيجة
بإرجاع كائن يحتوي على )( updateManyاألساليب)( updateOneتقوم
.معلومات حول كيفية تأثير التنفيذ على قاعدة البيانات
ليس من المهم فهم معظم المعلومات ،ولكن هناك كائن واحد داخل الكائن يسمى
"النتيجة" والذي يخبرنا ما إذا كان التنفيذ يسير على ما يرام ،وعدد المستندات
.التي تأثرت
:يبدو الكائن الناتج كما يلي
مثال
;)console.log(res.result.nModified
2
مثال
C:\Users\Your Name>node
Abo_Habib_mongodb_limit.js
عمالء
[
{ _id: 58fdbf5c0ef8a50b4cdd9a84 , name: 'Amro',
address: 'Giza 71'},
{ _id: 58fdbf5c0ef8a50b4cdd9a85 , name: 'HAbib',
address: 'Al_Badrashen 4'},
{ _id: 58fdbf5c0ef8a50b4cdd9a86 , name:
'Mohamed', address: 'Apple st 652'},
{ _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Ahmed',
address: 'ElSudeya 21'},
{ _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Abo_Ali',
address: 'Omar 345'}
]
طلبات
[
} { _id: 1, product_id: 154, status: 1
]
منتجات
[
{ _id: 154, name: 'Ebraheem ' },
{ _id: 155, name: 'Hamza' },
} { _id: 156, name: 'Yousef
]
C:\Users\Your Name>node
Abo_Habib_mongodb_join.js
[
{ "_id": 1, "product_id": 154, "status": 1,
[ "orderdetails":
] } " { "_id": 154, "name": "Ebraheem
}
]