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

MongoDb Cách nhóm theo tháng và năm từ chuỗi

Bạn không thể sử dụng toán tử tổng hợp ngày trên bất kỳ thứ gì khác là Date đối tượng chính nó. Tùy chọn tốt nhất cuối cùng của bạn là chuyển đổi các "chuỗi" này thành Date các đối tượng để bạn có thể truy vấn chính xác trong các hoạt động này và trong tương lai.

Điều đó nói rằng, nếu "chuỗi" của bạn luôn có cấu trúc chung thì có một cách để thực hiện việc này với khung phân loại công cụ. Nó đòi hỏi nhiều thao tác suy nghĩ không làm cho đây là một cách tiếp cận "tối ưu" để giải quyết vấn đề. Nhưng với cấu trúc tập hợp "chữ số kép" và dấu phân cách nhất quán, điều này có thể xảy ra với $substr nhà điều hành:

db.collection.aggregate([
   { "$group": {
       "_id": {
           "year": { "$substr": [ "$dateStr", 7, 4 ] },
           "month": { "$substr": [ "$dateStr", 4, 2 ] }
       },
       "count": { "$sum": 1 }
   }}
])

Vì vậy, việc ép kiểu JavaScript không hoạt động bên trong khuôn khổ tổng hợp. Bạn luôn có thể "cấp" đầu vào cho đường ống dựa trên đánh giá "mã khách hàng", nhưng bản thân quá trình tổng hợp không đánh giá bất kỳ mã nào. Cũng giống như công cụ truy vấn cơ bản, tất cả đều dựa trên triển khai "cấu trúc dữ liệu" sử dụng hướng dẫn "toán tử gốc" để thực hiện công việc.

Bạn không thể chuyển đổi chuỗi thành ngày tháng trong quy trình tổng hợp. Bạn nên làm việc với BSON Date thực nhưng bạn có thể làm điều đó với chuỗi nếu có một định dạng nhất quán mà bạn có thể trình bày theo "thứ tự từ vựng".

Tôi vẫn khuyên bạn nên chuyển đổi những điều này thành BSON Dates CÀNG SỚM CÀNG TỐT. Và hãy cẩn thận rằng giá trị "ISODate" hoặc UTC được xây dựng với một dạng chuỗi khác. tức là:

new Date("2020-01-07")

Ở định dạng "yyyy-mm-dd". Ít nhất là đối với lệnh gọi JavaScript.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đặt TTL không hoạt động trong Mongodb c #

  2. Cách hợp nhất trường mảng trong tài liệu trong tổng hợp Mongo

  3. MongoDb tìm kiếm mảng lồng nhau giữa dateTimes bằng Robomongo

  4. Chuyển đổi mảng mongo thành đối tượng có cặp khóa-giá trị

  5. Khởi động mùa xuân cố gắng kết nối với mongo khi thêm phụ thuộc mongo-java-driver maven