Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การใช้ Variables ใน MongoDB Query (Mongo Shell)

ใน Mongo Shell สามารถใช้ตัวแปร JavaScript (var/let/const) เพื่อเก็บค่าและนำไปใช้ใน query ได้ ทำให้โค้ดอ่านง่ายและ reuse ค่าได้

สร้างคอลเลกชันและข้อมูลตัวอย่าง

> db.demo107.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2ee1b19fd5fd66da214471") }
> db.demo107.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2ee1b49fd5fd66da214472") }
> db.demo107.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2ee1b89fd5fd66da214473") }

แสดงข้อมูลทั้งหมด

> db.demo107.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e2ee1b19fd5fd66da214471"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2ee1b49fd5fd66da214472"), "Name" : "Bob" }
{ "_id" : ObjectId("5e2ee1b89fd5fd66da214473"), "Name" : "David" }

ใช้ Variable ใน Query

> var firstName = "Bob";
> db.demo107.find({"Name": firstName});

ผลลัพธ์

{ "_id" : ObjectId("5e2ee1b49fd5fd66da214472"), "Name" : "Bob" }

คำอธิบาย:

  • var firstName = "Bob": ประกาศตัวแปรใน Mongo Shell (JavaScript context)
  • {"Name": firstName}: ใช้ตัวแปรใน query object โดยตรง
  • ตัวแปรจะคงค่าไว้ใน shell session จนกว่าจะออกหรือ assign ใหม่

การใช้งานขั้นสูง

1. เก็บ ObjectId ไว้ใช้ซ้ำ

var userId = ObjectId("5e2ee1b49fd5fd66da214472");
db.demo107.find({_id: userId});
db.demo107.updateOne({_id: userId}, {$set: {Name: "Robert"}});

2. เก็บ Query Object ใช้ซ้ำ

var query = {Name: {$in: ["Chris", "Bob"]}};
db.demo107.find(query);
db.demo107.countDocuments(query);

3. ใช้ใน Aggregate Pipeline

var matchStage = {$match: {Name: "Bob"}};
var projectStage = {$project: {Name: 1, _id: 0}};
db.demo107.aggregate([matchStage, projectStage]);

4. Loop และ Batch Operations

var names = ["Chris", "Bob", "David"];
names.forEach(function(name) {
  db.demo107.updateOne(
    {Name: name},
    {$set: {LastUpdated: new Date()}}
  );
});

Scope ของตัวแปร

  • var: function-scoped หรือ global ใน shell
  • let, const: block-scoped (ES6, รองรับใน Mongo Shell ใหม่)
  • ตัวแปรหายเมื่อปิด shell หรือเริ่ม session ใหม่

หมายเหตุ: ใน Application code (Node.js, Python, etc.) ให้ใช้ตัวแปรของภาษานั้นแทน ไม่ใช่ Mongo Shell variables