Node.js MongoDB بحث


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

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

ابحث عن واحد

لتحديد البيانات من مجموعة في MongoDB ، يمكننا استخدام findOne()الطريقة.

تقوم findOne()الطريقة بإرجاع التواجد الأول في التحديد.

المعلمة الأولى findOne()للأسلوب هي كائن الاستعلام. في هذا المثال ، نستخدم كائن استعلام فارغ ، والذي يحدد جميع المستندات في مجموعة (لكنه يُرجع المستند الأول فقط).

مثال

ابحث عن المستند الأول في مجموعة العملاء:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").findOne({}, function(err, result) {
    if (err) throw err;
    console.log(result.name);
    db.close();
  });
});

احفظ الكود أعلاه في ملف يسمى "demo_mongodb_findone.js" وقم بتشغيل الملف:

قم بتشغيل "demo_mongodb_findone.js"

C:\Users\Your Name>node demo_mongodb_findone.js

والتي ستعطيك هذه النتيجة:

Company Inc.


جد كل

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

تقوم find()الطريقة بإرجاع جميع التكرارات في التحديد.

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

لا توجد معلمات في طريقة البحث () تمنحك نفس نتيجة SELECT * في MySQL.

مثال

ابحث عن جميع المستندات في مجموعة العملاء:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

احفظ الكود أعلاه في ملف يسمى "demo_mongodb_find.js" وقم بتشغيل الملف:

قم بتشغيل "demo_mongodb_find.js"

C:\Users\Your Name>node demo_mongodb_find.js

والتي ستعطيك هذه النتيجة:

[
  { _id: 58fdbf5c0ef8a50b4cdd9a84 , name: 'John', address: 'Highway 71'},
  { _id: 58fdbf5c0ef8a50b4cdd9a85 , name: 'Peter', address: 'Lowstreet 4'},
  { _id: 58fdbf5c0ef8a50b4cdd9a86 , name: 'Amy', address: 'Apple st 652'},
  { _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Hannah', address: 'Mountain 21'},
  { _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Michael', address: 'Valley 345'},
  { _id: 58fdbf5c0ef8a50b4cdd9a89 , name: 'Sandy', address: 'Ocean blvd 2'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8a , name: 'Betty', address: 'Green Grass 1'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8b , name: 'Richard', address: 'Sky st 331'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8c , name: 'Susan', address: 'One way 98'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8d , name: 'Vicky', address: 'Yellow Garden 2'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8e , name: 'Ben', address: 'Park Lane 38'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8f , name: 'William', address: 'Central st 954'},
  { _id: 58fdbf5c0ef8a50b4cdd9a90 , name: 'Chuck', address: 'Main Road 989'},
  { _id: 58fdbf5c0ef8a50b4cdd9a91 , name: 'Viola', address: 'Sideway 1633'}
]

جد بعض

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

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

مثال

قم بإرجاع الحقلين "الاسم" و "العنوان" لجميع المستندات في مجموعة العملاء:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0, name: 1, address: 1 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

احفظ الكود أعلاه في ملف يسمى "demo_mongodb_find_fields.js" وقم بتشغيل الملف:

قم بتشغيل "demo_mongodb_find_fields.js"

C:\Users\Your Name>node demo_mongodb_find_fields.js

والتي ستعطيك هذه النتيجة:

[
  { name: 'John', address: 'Highway 71'},
  { name: 'Peter', address: 'Lowstreet 4'},
  { name: 'Amy', address: 'Apple st 652'},
  { name: 'Hannah', address: 'Mountain 21'},
  { name: 'Michael', address: 'Valley 345'},
  { name: 'Sandy', address: 'Ocean blvd 2'},
  { name: 'Betty', address: 'Green Grass 1'},
  { name: 'Richard', address: 'Sky st 331'},
  { name: 'Susan', address: 'One way 98'},
  { name: 'Vicky', address: 'Yellow Garden 2'},
  { name: 'Ben', address: 'Park Lane 38'},
  { name: 'William', address: 'Central st 954'},
  { name: 'Chuck', address: 'Main Road 989'},
  { name: 'Viola', address: 'Sideway 1633'}
]

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

مثال

سيستبعد هذا المثال "العنوان" من النتيجة:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { address: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

لاستبعاد حقل _id ، يجب عليك تعيين قيمته على 0:

مثال

سيعرض هذا المثال حقل "الاسم" فقط:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0, name: 1 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

مثال

سيعطيك هذا المثال نفس النتيجة مثل المثال الأول ؛ إرجاع كافة الحقول باستثناء الحقل _id:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

مثال

تحصل على خطأ إذا حددت كلاً من القيم 0 و 1 في نفس الكائن (باستثناء إذا كان أحد الحقول هو الحقل _id):

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { name: 1, address: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});

كائن النتيجة

كما ترى من نتيجة المثال أعلاه ، يمكن تحويل النتيجة إلى مصفوفة تحتوي على كل مستند ككائن.

للعودة ، على سبيل المثال ، عنوان المستند الثالث ، ما عليك سوى الرجوع إلى خاصية عنوان كائن المصفوفة الثالثة:

مثال

إعادة عنوان المستند الثالث:

console.log(result[2].address);

والتي ستنتج هذه النتيجة:

Apple st 652