เก็บผลลัพธ์ Query ไว้ในตัวแปร JavaScript ใน Mongo Shell
MongoDB Shell เป็นสภาพแวดล้อม JavaScript ทำให้สามารถกำหนดผลลัพธ์ของ findOne() หรือ find() ลงในตัวแปร แล้วนำไปใช้ต่อได้
ตัวอย่างข้อมูล
> db.useResultDemo.insertOne({"StudentFirstName":"Robert"});
เก็บผลลัพธ์ลงตัวแปร
> var studentName = db.useResultDemo.findOne({}, {_id: 0});
> studentName
ผลลัพธ์
{ "StudentFirstName" : "Robert" }
การประยุกต์ใช้
// 1. ใช้ค่าในตัวแปรต่อ
var doc = db.users.findOne({ name: "John" });
if (doc) {
print("Found: " + doc.email);
db.orders.updateMany({ userId: doc._id }, { $set: { status: "notified" } });
}
// 2. วนลูปประมวลผล
var cursor = db.products.find({ price: { $gt: 100 } });
while (cursor.hasNext()) {
var product = cursor.next();
printjson(product.name);
}
// 3. แปลง Cursor เป็น Array (ระวังหน่วยความจำถ้าข้อมูลเยอะ)
var allProducts = db.products.find().toArray();
คำเตือน
toArray()จะโหลดข้อมูลทั้งหมดเข้าหน่วยความจำ - ใช้กับข้อมูลเล็กเท่านั้น- สำหรับข้อมูลเยอะ ใช้
cursor.forEach()หรือประมวลผลทีละ Batch - ตัวแปรใน Shell มีชีวิตอยู่ภายใน Session นั้นๆ เท่านั้น