Tôi đang cố sắp xếp dữ liệu theo ngày trước và sau đó nhóm trên một trường khác. Nó không hoạt động với tôi.Khung tập hợp Mongo, Sắp xếp và sau đó nhóm không hoạt động
Câu hỏi tôi đang cố trả lời là: Chọn cid khác biệt gần đây nhất?
đưa dữ liệu này:
db.summary.save({"lid" : 5, "date" : 5, "cid" : 2, "circles" : [ 2 ] })
db.summary.save({"lid" : 2, "date" : 2, "cid" : 1, "circles" : [ 2 ] })
db.summary.save({"lid" : 4, "date" : 0, "cid" : 3, "circles" : [ 2 ] })
db.summary.save({"lid" : 3, "date" : 3, "cid" : 2, "circles" : [ 2 ] })
db.summary.save({"lid" : 1, "date" : 1, "cid" : 1, "circles" : [ 2 ] })
db.summary.aggregate({$match :{circles: 2}, $sort: {date: -1}, $group: {_id: '$cid'}})
Tôi đang làm một trận đấu đầu tiên trên vòng tròn, sau đó một sắp xếp trên ngày, sau đó một nhóm trên cid
Kết quả tôi nhận được:
{
"result" : [
{
"_id" : 3
},
{
"_id" : 1
},
{
"_id" : 2
}
],
"ok" : 1
}
Đây là phân tích của tôi:
trước phù hợp hoặc sắp xếp theo ngày, dữ liệu là:
"lid" : 5, "date" : 5, "cid" : 2
"lid" : 2, "date" : 2, "cid" : 1
"lid" : 4, "date" : 0, "cid" : 3
"lid" : 3, "date" : 3, "cid" : 2
"lid" : 1, "date" : 1, "cid" : 1
Sau khi sắp xếp theo ngày, tập dữ liệu sẽ là:
"lid" : 5, "date" : 5, "cid" : 2
"lid" : 3, "date" : 3, "cid" : 2
"lid" : 2, "date" : 2, "cid" : 1
"lid" : 1, "date" : 1, "cid" : 1
"lid" : 4, "date" : 0, "cid" : 3
Vì vậy, sau khi nhóm, kết quả tôi mong đợi là:
{
"result" : [
{
"_id" : 2
},
{
"_id" : 1
},
{
"_id" : 3
}
],
"ok" : 1
}
Truy vấn nào giải quyết được sự cố của tôi?
Tại sao truy vấn hiện tại không hoạt động đối với tôi?
Thông số đường dẫn của bạn tới 'tổng hợp' cần phải được đặt trong một mảng hoặc được truyền dưới dạng đối tượng độc lập thay vì một đối tượng lớn. Và câu hỏi của bạn nói về việc nhóm lại trên 'cid' nhưng lệnh này được nhóm lại thành' $ date'. – JohnnyHK
Đó là lỗi đánh máy. Nó phải là $ group: {_id: '$ cid'} – ben39