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

แบบสอบถาม MongoDB เพื่อแสดงเอกสารทางเลือกด้วยฟังก์ชัน mapReduce() และปล่อยค่าฟิลด์ที่เท่ากัน


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

> db.demo636.insert({id:1});
WriteResult({ "nInserted" : 1 })
> db.demo636.insert({id:2});
WriteResult({ "nInserted" : 1 })
> db.demo636.insert({id:3});
WriteResult({ "nInserted" : 1 })
> db.demo636.insert({id:4});
WriteResult({ "nInserted" : 1 })
> db.demo636.insert({id:5});
WriteResult({ "nInserted" : 1 })
> db.demo636.insert({id:6});
WriteResult({ "nInserted" : 1 })

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

> db.demo636.find();

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

{ "_id" : ObjectId("5e9c127b6c954c74be91e6d2"), "id" : 1 }
{ "_id" : ObjectId("5e9c127e6c954c74be91e6d3"), "id" : 2 }
{ "_id" : ObjectId("5e9c127f6c954c74be91e6d4"), "id" : 3 }
{ "_id" : ObjectId("5e9c12816c954c74be91e6d5"), "id" : 4 }
{ "_id" : ObjectId("5e9c12836c954c74be91e6d6"), "id" : 5 }
{ "_id" : ObjectId("5e9c12896c954c74be91e6d7"), "id" : 6 }

ต่อไปนี้เป็นแบบสอบถามเพื่อใช้ mapReduce() และแสดงเฉพาะค่าคู่ -

> db.demo636.mapReduce(
...    function () {
...       oddCounter++;
...       var id= this._id;
...       delete this._id;
...       if ( oddCounter % d != 0 )
...       emit(id, this );
...    },
...    function() {},
...    {
...       "scope": { "oddCounter": 0, "d": 2 },
...       "out": { "inline": 1 }
...    }
... )

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

{
   "results" : [
      {
         "_id" : ObjectId("5e9c127b6c954c74be91e6d2"),
         "value" : {
            "id" : 1
      }
   },
   {
      "_id" : ObjectId("5e9c127f6c954c74be91e6d4"),
      "value" : {
         "id" : 3
      }
   },
   {
      "_id" : ObjectId("5e9c12836c954c74be91e6d6"),
      "value" : {
         "id" : 5
      }
   }
],
"timeMillis" : 29,
"counts" : {
   "input" : 6,
   "emit" : 3,
   "reduce" : 0,
   "output" : 3
   },
"ok" : 1
}