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

Truy vấn MongoDB để chuyển đổi giá trị trường và tạo datetime ngày trong tháng trong quá trình chiếu?

Để chuyển đổi giá trị đã nộp để tạo ngày giờ trong tháng, hãy sử dụng MongoDB tổng hợp (). Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo209.insertOne(
...   {
...      "_id" : "101",
...      "details" : [
...         {
...            "dat" : 1528929908,
...            "Name" : "Chris"
...         },
...         {
...            "dat" : 1529082069,
...            "Name":"Carol"
...         }
...      ],
...      "Age" : 25,
...      "CountryName" : "US"
...   }
...);
{ "acknowledged" : true, "insertedId" : "101" }

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.demo209.find().pretty();

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

{
   "_id" : "101",
   "details" : [
      {
         "dat" : 1528929908,
         "Name" : "Chris"
      },
      {
         "dat" : 1529082069,
         "Name" : "Carol"
      }
   ],
   "Age" : 25,
   "CountryName" : "US"
}

Sau đây là truy vấn để chuyển đổi giá trị trường và tạo ngày giờ trong tháng trong quá trình chiếu -

> db.demo209.aggregate({
...   "$unwind": "$details"
...   }, {
...         "$project": {
...            "Age": 1,
...            "CountryName": 1,
...            "Name": "$details.Name",
...            "DayOfMonth": {
...               "$dayOfMonth": {
...                  "$add": [new Date(0), {
...                     "$multiply": ["$details.dat", 1000]
...               }]
...            }
...         }
...   }
...})

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

{ "_id" : "101", "Age" : 25, "CountryName" : "US", "Name" : "Chris", "DayOfMonth" : 13 }
{ "_id" : "101", "Age" : 25, "CountryName" : "US", "Name" : "Carol", "DayOfMonth" : 15 }