2012-12-16 32 views
8

Tôi đã cố gắng để sử dụng chức năng tổng hợp để trường ngày nhóm theo năm:MongoDB Tổng Framework - Đoàn tự do Năm

db.identities.aggregate([ 
{ 
    $group : { 
     _id : { year : {$year : "$birth_date"}}, 
     total : {$sum : 1} 
     } 
    } 
]) 

Một số ngày tôi tuy nhiên rơi trước năm 1970 và trở thành một người dùng Windows tôi nhận được một lỗi khó chịu về gmtime:

{ 
    "errmsg" : "exception: gmtime failed - your system doesn't support dates before 1970", 
    "code" : 16422, 
    "ok" : 0 
} 

tôi biết câu trả lời rõ ràng là bây giờ cho tôi để có được một máy chạy ảo hoặc một cái gì đó nhưng tôi chỉ tò mò nếu có bất kỳ công việc ở quanh cho các cửa sổ (windows 7 trong trường hợp của tôi) . Không có bao nhiêu của một hit hiệu suất sẽ lưu trữ ngày như một đối tượng lồng nhau được tức là:

birth_date : { 
    year : 1980, 
    month : 12, 
    day : 9 
} 

Tôi không quá chắc chắn cách bận rộn đó sẽ là với chỉ số vv

Bất cứ lời khuyên đánh giá cao!

+0

bạn đang sử dụng phiên bản Mongo nào? – Alex

Trả lời

0

Một số phiên bản Windows đã được biết là hoạt động. Bạn có sử dụng hệ điều hành 32 bit không? Mã được đề cập là here và phụ thuộc vào triển khai gmtime_s().

Nếu bộ sưu tập này chỉ đơn giản là cho các truy vấn tổng hợp, bạn chắc chắn có thể nhận được bằng cách lưu trữ các thành phần ngày trong một đối tượng. Tôi khuyên bạn nên viết tắt tên trường (ví dụ: y, m, d) để lưu vào bộ nhớ, vì chuỗi trường hiện diện trong mỗi tài liệu được lưu trữ. Thương mại-off ở đây là không ai trong số các nhà khai thác ngày tổng hợp có thể được sử dụng. Bạn có thể muốn lưu dấu thời gian dưới dạng số nguyên đã ký (ví dụ: ts) để bạn có thể dễ dàng thực hiện các truy vấn phạm vi nếu cần.

+0

xin lỗi vì sự chậm trễ lâu dài - chỉ mới truy cập lại trang này. Cảm ơn câu trả lời của bạn! – backdesk

+0

Điều này có phần hơi hoang mang vì nó làm tê liệt nghiêm trọng việc triển khai 'date type' trên nền tảng này. Điều này xảy ra trên 64-bit xây dựng là tốt: http://stackoverflow.com/q/21869602/2313887 –

+0

@NeilLunn: Tôi ghi nhận bình luận của bạn trong câu hỏi khác và mở [SERVER-12816] (https: //jira.mongodb .org/browse/SERVER-12816) để theo dõi điều này. – jmikola

Các vấn đề liên quan