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

MongoDB Query แสดงเอกสารสลับกันด้วย mapReduce() และ Emit ค่า Even

การใช้ mapReduce() แสดงเอกสารสลับกัน (ค่า Even)

สร้าง Collection พร้อมข้อมูล

> 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 })

แสดงเอกสารทั้งหมด

> 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() แสดงเฉพาะค่า Odd (ลำดับ 1,3,5)

> 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
}