Computer >> Máy Tính >  >> Lập trình >> MongoDB

Nhận tổng hợp riêng biệt của một trường mảng trên các chỉ mục

Để có được một tập hợp riêng biệt của một trường mảng trên các chỉ mục, chúng ta hãy lấy một ví dụ và tạo một tập hợp với một số tài liệu.

Sau đây là truy vấn để tạo một bộ sưu tập với các tài liệu

> db.distinctAggregation.insertOne({"UserName":"Larry","UserPost":["Hi","Hello"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c98aefb330fd0aa0d2fe4c6")
}
> db.distinctAggregation.insertOne({"UserName":"Chris","UserPost":["Hi","Good Morning"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c98af0a330fd0aa0d2fe4c7")
}
> db.distinctAggregation.insertOne({"UserName":"Robert","UserPost":["Awesome"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c98af1e330fd0aa0d2fe4c8")
}

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find ()

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

Điều này sẽ tạo ra kết quả sau

{
   "_id" : ObjectId("5c98aefb330fd0aa0d2fe4c6"),
   "UserName" : "Larry",
   "UserPost" : [
      "Hi",
      "Hello"
   ]
}
{
   "_id" : ObjectId("5c98af0a330fd0aa0d2fe4c7"),
   "UserName" : "Chris",
   "UserPost" : [
      "Hi",
      "Good Morning"
   ]
}
{
   "_id" : ObjectId("5c98af1e330fd0aa0d2fe4c8"),
   "UserName" : "Robert",
   "UserPost" : [
      "Awesome"
   ]
}

Sau đây là truy vấn để tạo chỉ mục trên trường mảng

> db.distinctAggregation.ensureIndex({"UserPost":1});
{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

Sau đây là truy vấn để có được một tập hợp riêng biệt của một trường mảng trên các chỉ mục

> db.distinctAggregation.distinct("UserPost");

Điều này sẽ tạo ra kết quả sau

[ "Awesome", "Good Morning", "Hello", "Hi" ]