تقوم طريقة findOne() في MongoDB بإرجاع وثيقة واحدة فقط تلبي المعايير المدخلة. إذا تطابقت المعايير المدخلة مع أكثر من وثيقة واحدة، تقوم الطريقة بإرجاع وثيقة واحدة فقط وفقًا للترتيب الطبيعي، الذي يعكس ترتيب الوثائق في قاعدة البيانات.
findOne MongoDB
بناء جملة findOne() في MongoDB هو:
db.collection.findOne(<criteria>, <projection>)
المعايير – تحدد المعايير التي تم إدخالها للاختيار. التصوير – يحدد قائمة الحقول التي يجب عرضها في الوثيقة المرجعية المُرجعة. بعض النقاط المهمة حول findOne في MongoDB:
- يقبل المعلمة التصوير قيم البوليان 1 أو true ، 0 أو false. إذا لم يتم تحديد حقول التصوير، سيتم استرجاع جميع الحقول.
- تتضمن findOne() في MongoDB دائمًا حقل _id حتى لو لم يتم تحديده صراحة في معلمة التصوير ما لم يتم استبعاده.
- findOne() في MongoDB تقوم بإرجاع وثيقة واحدة فقط وليس مؤشرًا.
findOne لـ MongoDB – مواصفات الاستعلام فارغة
تقوم هذه العملية بإرجاع وثيقة واحدة من المجموعة المحددة. على سبيل المثال، db.car.findOne()
الناتج:
{
"_id" : 2,
"name" : "Polo", "color" : "White",
"cno" : "H411", "speed" : 45, "mfdcountry" : "Japan"
}
يتم استرجاع سجل واحد فقط من مجموعة car
. يرجى ملاحظة أن “Polo” تم إدراجه أولاً في قاعدة البيانات.
findOne لـ MongoDB – مواصفات الاستعلام
تقوم هذه العملية findOne في MongoDB بإرجاع أول وثيقة تطابق المعايير المحددة من المجموعة المحددة بالإضافة إلى معايير الاختيار المُدخلة. على سبيل المثال:
>db.car.findOne(
... {
... $or:[
... {name:"Zen"},
... {speed: {$gt:60}} ... ]
... }
... )
{
"_id" : ObjectId("546cb92393f464ed49d620db"),
"name" : "Zen",
"color" : "JetRed",
"cno" : "H671",
"speed" : 67,
"mfdcountry" : "Rome"
}
تقوم هذه العملية بالبحث عن سيارة تسمى “Zen” أو بسرعة أكبر من 60 وتسترجع أول وثيقة تلبي المعايير المُدخلة من مجموعة السيارات.
التنبؤ في findOne() لـ MongoDB
المعلمة للتنبؤ قابلة للتطبيق أيضًا لطريقة findOne في MongoDB. لنلق نظرة على بعض السيناريوهات حيث يمكننا استخدام التنبؤ في findOne.
بحث واحد في MongoDB – تحديد الحقول التي يجب إرجاعها
تعرض هذه العملية فقط الحقول المحددة في الاستعلام. على سبيل المثال:
>db.car.findOne(
... { },
... {name:1,color:1}
... )
{ "_id" : 2, "name" : "Polo", "color" : "White" }
يتم عرض أول وثيقة من مجموعة السيارات بحقول الهوية، الاسم واللون.
بحث واحد في MongoDB – إرجاع جميع الحقول باستثناء الحقل المستبعد
تسترجع هذه العملية الوثيقة الأولى باستثناء الحقول المحددة في معايير الاختيار. على سبيل المثال؛
>db.car.findOne(
... { name:"Volkswagen" },
... {_id:0, mfdcountry:0,cno:0 }
... )
{ "name" : "Volkswagen", "color" : "JetBlue", "speed" : 62 }
يتم استرجاع اسم السيارة مع فولكس واجن باستثناء حقول الهوية والبلد المصنع ورقم الهيكل.
وثيقة نتيجة بحث واحد في MongoDB
لن تعمل طرق المؤشر في هذه العملية حيث أن الطريقة تُرجع وثيقة واحدة فقط. من أجل طباعة قيم الحقول الفردية من الوثيقة، يمكننا استخدام الكود أدناه.
>var car = db.car.findOne();
> if (car) {
... var carName = car.name;
... print (tojson(carName));
... }
"Polo"
هذا يسترجع فقط اسم السيارة “بولو”.
مثال MongoDB findOne Java
فيما يلي البرنامج الذي يظهر الخيارات المختلفة التي يمكننا استخدامها مع findOne() في MongoDB. MongoDBFindOne.java
package com.journaldev.mongodb;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;
public class MongoDBFindOne {
// الطريقة التي تسترد أول وثيقة دون أي معايير
public static void emptyFindOne() throws UnknownHostException {
// الحصول على اتصال جديد بقاعدة البيانات بشرط أنها تعمل
MongoClient mongoClient = new MongoClient("localhost");
// استخدم test كقاعدة بيانات، استخدم قاعدة بياناتك هنا
DB db = mongoClient.getDB("test");
// جلب كائن المجموعة، يتم استخدام car هنا، استخدم الخاصة بك
DBCollection coll = db.getCollection("car");
// استدعاء طريقة findOne()
DBObject doc = coll.findOne();
// يطبع الوثيقة الناتجة
System.out.println(doc);
}
// الطريقة التي تسترد الوثيقة بناءً على معايير الاختيار
public static void querySpecification() throws UnknownHostException {
// عدم الحاجة إلى الحصول على اتصال في كل مرة (يمكن القيام به مرة واحدة
// globally).
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("car");
// الاستعلام لتصفية الوثيقة بناءً على قيم الاسم والسرعة من خلال
// إنشاء كائن جديد
DBObject query = new BasicDBObject("name", "Zen").append("speed",
new BasicDBObject("$gt", 30));
// الوثيقة الناتجة المحصلة من خلال رضا المعايير
DBObject d1 = coll.findOne(query);
// يطبع الوثيقة على وحدة التحكم
System.out.println(d1);
}
public static void projectionFields() throws UnknownHostException {
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("car");
// إنشاء كائن قاعدة بيانات جديد
BasicDBObject b1 = new BasicDBObject();
// معايير لعرض الحقول الاسم واللون فقط في الناتج
// document
BasicDBObject fields = new BasicDBObject("name", 1).append("color", 1);
// الطريقة التي تسترد الوثائق عن طريق قبول الحقول وكائن
// criteria
DBObject d1 = coll.findOne(b1, fields);
System.out.println(d1);
}
public static void excludeByfields() throws UnknownHostException {
MongoClient m1 = new MongoClient("localhost");
DB db = m1.getDB("test");
DBCollection col = db.getCollection("car");
// معايير التصفية لاسم السيارة volkswagen
DBObject query = new BasicDBObject("name", "Volkswagen");
// استبعاد حقول mfdcountry و cno و id
BasicDBObject fields = new BasicDBObject("mfdcountry", 0).append("cno",
0).append("_id", 0);
DBObject d1 = col.findOne(query, fields);
System.out.println(d1);
}
public static void printDoc() throws UnknownHostException {
MongoClient m1 = new MongoClient("localhost");
DB db = m1.getDB("test");
DBCollection col = db.getCollection("car");
DBObject d1 = col.findOne();
// يطبع فقط اسم السيارة
System.out.println((d1.get("name")));
}
public static void main(String[] args) throws UnknownHostException {
// استدعاء جميع الطرق من الرئيسي
emptyFindOne();
querySpecification();
projectionFields();
excludeByfields();
printDoc();
}
}
مخرج البرنامج أعلاه هو:
{ "_id" : 2.0 , "name" : "Polo" , "color" : "White" , "cno" : "H411" , "speed" : 45.0 , "mfdcountry" : "Japan"}
{ "_id" : { "$oid" : "546cb92393f464ed49d620db"} , "name" : "Zen" , "color" : "JetRed" , "cno" : "H671" , "speed" : 67 , "mfdcountry" : "Rome"}
{ "_id" : 2.0 , "name" : "Polo" , "color" : "White"}
{ "name" : "Volkswagen" , "color" : "JetBlue" , "speed" : 62}
Polo
هذا كل شيء بالنسبة لطريقة findOne() في MongoDB، سنتطلع إلى المزيد من خيارات MongoDB في المنشورات القادمة. المرجع: الوثائق الرسمية
Source:
https://www.digitalocean.com/community/tutorials/mongodb-findone-example