Tôi cố gắng sử dụng khuôn khổ hợp (với ruby) và dự án ngày như thế này:MongoDB: không thể chuyển đổi từ loại BSON EOO to Date
db['requests'].aggregate([
{"$project" => {
_id: 0,
method: '$method',
user: '$user',
year: {'$year' => '$timestamp'}
}}])
tài liệu là như thế này một:
{
_id: ObjectId("5177d7d7df26358289da7dfd"),
timestamp: ISODate("2013-04-12T03:58:05+00:00"),
method: "POST",
status: "200",
inputsize: "874",
outputsize: "4981",
user: "131"
}
nhưng tôi nhận được lỗi sau:
Mongo::OperationFailure: Database command 'aggregate' failed: (errmsg: 'exception: can't convert from BSON type EOO to Date'; code: '16006'; ok: '0.0').
Đây là kỳ lạ bởi vì nó hoạt động một cách chính xác nếu tôi chạy này trên db chính xác cùng mà tôi s nhập khẩu với mongorestore.
Dường như thứ tự của mảng được truyền vào tổng hợp() là quan trọng. Nếu bạn có các trường bị bỏ sót, bạn sẽ muốn thêm trường đó vào $ match và có $ match là phần tử đầu tiên trong mảng. I E. > db.user_account.aggregate ([{$ match: {"uts": {$ exist: true}, "chan_key": "333261c7a72650a95c68d30cd70"}}, {$ project: {"period_month": {$ month: "$ uts "}}}, {$ nhóm: {_id: {" period_month ":" $ period_month "}," number ": {$ sum: 1}}}]) –