MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongo:Làm thế nào để nhóm theo $ tuần nhưng thay vào đó trả lại ngày bắt đầu và ngày kết thúc của mỗi tuần?

Mặc dù có thể thực hiện được, nhưng làm cho mã khó đọc hơn và phức tạp hơn.

Tôi sẽ viết lại $group giai đoạn để bao gồm year cùng với weeks và thêm $project giai đoạn định dạng dữ liệu theo yêu cầu.

db.collection.aggregate([
  {
    "$group": {
      "_id": {
        "week": {
          "$week": {"$subtract": ["$at", 25200000]}  // <-- Changes timezone to -07:00
        },
        "year": {
          "$year": {"$subtract": ["$at", 25200000]}  // <-- Changes timezone to -07:00
        },
      },
      // <-- Add keys to be added in group along with its logics
      "averageValue": {
        "$avg": "$readings.level_1"
      }
    },
  },
  {
    "$project": {
      "_id": {
        "startDate": {
          "$dateToString": {
            "date": {
              "$dateFromParts": {
                "isoWeekYear": "$_id.year",
                "isoWeek": "$_id.week"
              }
            },
            "format": "%Y-%m-%d",
          },
        },
        "endDate": {
          "$dateToString": {
            "date": {
              "$add": [
                {
                  "$dateFromParts": {
                    "isoWeekYear": "$_id.year",
                    "isoWeek": "$_id.week"
                  }
                },
                518400000,
              ],
            },
            "format": "%Y-%m-%d",
          },
        },
      },
      // <-- Add remaining keys to be projected
      "averageValue": 1,
    },
  },
])

Hãy cho tôi biết nếu bạn cần giải thích về từng giai đoạn và toán tử được sử dụng và lý do tôi sử dụng nó.

Thực thi mẫu sân chơi Mongo



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chế độ an toàn của MongoDB trên phụ trang an toàn như thế nào?

  2. Làm cách nào để truy xuất quy tắc trình xác thực bộ sưu tập MongoDb?

  3. Cách mã hóa trường trong MongoDB

  4. Ngoại lệ Mongodb, MongoCursorException 'với thông báo' $ operator đã tạo đối tượng quá lớn Nó có nghĩa là gì?

  5. làm thế nào để giải quyết lỗi giao dịch này trong mlab? [MongoError:Số giao dịch là ... hỗ trợ khóa cấp độ tài liệu]