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

MongoDB รวมองค์ประกอบที่สองจากองค์ประกอบอินพุตหรือไม่


หากต้องการรวมองค์ประกอบที่สองจากองค์ประกอบอินพุต ให้ใช้ mapReduce() Map-reduce เป็นกระบวนทัศน์การประมวลผลข้อมูลสำหรับการย่อข้อมูลปริมาณมากให้เป็นผลลัพธ์รวมที่มีประโยชน์ ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo621.insert({ _id: 101, Name1: "John", Name2: "John" });
WriteResult({ "nInserted" : 1 })
> db.demo621.insert({ _id: 102, Name1: "Bob", Name2: "John" });
WriteResult({ "nInserted" : 1 })
> db.demo621.insert({ _id: 103, Name1: "Chris", Name2: "John" });
WriteResult({ "nInserted" : 1 })
> db.demo621.insert({ _id: 104, Name1: "Sam", Name2: "John" });
WriteResult({ "nInserted" : 1 })

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo621.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : 101, "Name1" : "John", "Name2" : "John" }
{ "_id" : 102, "Name1" : "Bob", "Name2" : "John" }
{ "_id" : 103, "Name1" : "Chris", "Name2" : "John" }
{ "_id" : 104, "Name1" : "Sam", "Name2" : "John" }

ต่อไปนี้เป็นแบบสอบถามเพื่อรวมองค์ประกอบที่สองจากองค์ประกอบอินพุต -

> db.demo621.mapReduce(
...    function () {
...       track++;
...       var actualId= this._id;
...       delete this._id;
...       if ( track % div == 0 )
...       emit(actualId, this );
...    },
...    function() {},
...    {
...       "scope": { "track": 0, "div": 2 },
...       "out": { "inline": 1 }
...    }
... )

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{
   "results" : [
      {
         "_id" : 102,
         "value" : {
            "Name1" : "Bob",
            "Name2" : "John"
         }
      },
   {
      "_id" : 104,
      "value" : {
         "Name1" : "Sam",
         "Name2" : "John"
      }
   }
],
"timeMillis" : 48,
"counts" : {
   "input" : 4,
   "emit" : 2,
   "reduce" : 0,
   "output" : 2
},
"ok" : 1
}