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

Chọn hai trường và trả về mảng đã sắp xếp với giá trị distinct trong MongoDB?

Sử dụng aggregation framework kết hợp toán tử $setUnion. Tạo collection:

> db.sortedArrayWithDistinctDemo.insertOne({ value1: 4, value2: 5});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc690b99cb58ca2b005e666") }
> db.sortedArrayWithDistinctDemo.insertOne({value1: 5, value2: 6});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc690b99cb58ca2b005e667") }
> db.sortedArrayWithDistinctDemo.insertOne({value1: 7, value2: 4});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc690b99cb58ca2b005e668") }

Hiển thị tất cả:

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

Kết quả:

{ "_id" : ObjectId("5cc690b99cb58ca2b005e666"), "value1" : 4, "value2" : 5 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e667"), "value1" : 5, "value2" : 6 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e668"), "value1" : 7, "value2" : 4 }

Truy vấn gộp hai trường, lấy distinct và sắp xếp:

> db.sortedArrayWithDistinctDemo.aggregate(
  [
    { "$group": {
      "_id": null,
      "value1": { "$push": "$value1" },
      "value2": { "$push": "$value2" }
    }},
    { "$project": {
      "_id": 0,
      "bothValues": { "$setUnion": [ "$value1", "$value2" ] }
    }}
  ]
);

Kết quả mảng distinct đã sắp xếp:

{ "bothValues" : [ 4, 5, 6, 7 ] }