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

อัปเดตค่าคีย์โดยที่คีย์อื่นเท่ากับค่าบางค่าใน MongoDB หรือไม่


ใช้ $elemMatch กับ $set

ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> dbkeyValueDemoinsertOne(
   {
      "_id" : new ObjectId(),
      "CustomerDetails" : [
         {
            "Name" : "Chris",
            "Age" :24,
         },
         {
            "Name" : "Robert",
            "Age" :29,
         },
         {
            "Name" : "David",
            "Age" :35,
         }
      ]
   }
);
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cefcf36ef71edecf6a1f6bf")
}

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> dbkeyValueDemofind()pretty();

ผลลัพธ์

{
   "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"),
   "CustomerDetails" : [
      {
         "Name" : "Chris",
         "Age" : 24
      },
      {
         "Name" : "Robert",
         "Age" : 29
      },
      {
         "Name" : "David",
         "Age" : 35
      }
   ]
}

นี่คือข้อความค้นหาเพื่ออัปเดตค่าคีย์โดยที่คีย์อื่นมีค่าเท่ากับค่าบางอย่าง -

> dbkeyValueDemoupdate(
   {"CustomerDetails":{"$elemMatch":{"Name":"David"}}},
   {"$set":{"CustomerDetails$Age":56}});
   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }
)

ให้เราตรวจสอบเอกสารอีกครั้ง -

> dbkeyValueDemofind()pretty();

ผลลัพธ์

{
   "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"),
   "CustomerDetails" : [
      {
         "Name" : "Chris",
         "Age" : 24
      },
      {
         "Name" : "Robert",
         "Age" : 29
      },
      {
         "Name" : "David",
         "Age" : 56
      }
   ]
}