Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Hiển thị record MongoDB distinct, có thứ tự với skip và limit?

Dùng aggregation framework với $group, $sort, $skip, $limit. Tạo collection có trùng lặp:

> db.orderedDistinctDemo.insertOne({"Name":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8e0140b992277dae0e9") }
> db.orderedDistinctDemo.insertOne({"Name":"Larry"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8e5140b992277dae0ea") }
> db.orderedDistinctDemo.insertOne({"Name":"Larry"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8e7140b992277dae0eb") }
> db.orderedDistinctDemo.insertOne({"Name":"Sam"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8ea140b992277dae0ec") }
> db.orderedDistinctDemo.insertOne({"Name":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8ee140b992277dae0ed") }
> db.orderedDistinctDemo.insertOne({"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8f2140b992277dae0ee") }
> db.orderedDistinctDemo.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8f6140b992277dae0ef") }
> db.orderedDistinctDemo.insertOne({"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ccfb8f9140b992277dae0f0") }

Hiển thị tất cả (có trùng):

> db.orderedDistinctDemo.find().pretty();

Aggregation distinct + sort + skip 3 + limit 8:

> db.orderedDistinctDemo.aggregate(
  { $group : { _id : "$Name" }},
  { $sort : { _id: 1 }},
  { $skip : 3 },
  { $limit : 8 }
);

Kết quả (bỏ 3 tên đầu theo alphabet, lấy các tên còn lại):