0
我正在根據不同日期所做的用戶記錄做出排名函數,並且我試圖使用mongodb聚合函數。但是我不知道如何得到正確的日期記錄。讓說我有記錄如下:試圖在mongodb上創建一個排名函數,聚合
db.test.insert(
[
{
'name':'a',
'mark':100,
'created' : new Date('2015-03-20')
},
{
'name':'a',
'mark':208,
'created' : new Date('2015-03-21')
},
{
'name':'a',
'mark':200,
'created' : new Date('2015-03-22')
},
{
'name':'b',
'mark':240,
'created' : new Date('2015-03-25')
},
{
'name':'b',
'mark':20,
'created' : new Date('2015-11-20')
},
{
'name':'c',
'mark':225,
'created' : new Date('2015-11-21')
},
{
'name':'c',
'mark':305,
'created' : new Date('2015-11-22')
},
{
'name':'c',
'mark':300,
'created' : new Date('2015-11-22')
}
]
);
,我有這樣的查詢:
db.test.aggregate([
{$group:{
"_id":"$name",
"mark" : {$max : "$mark"},
"name": {$min : "$name"},
"created" : {$max : "$created"}
}},
{$sort:{"mark":-1}}
])
,我得到的結果:
{ "_id" : "c", "mark" : 305, "name" : "c", "created" : ISODate("2015-11-22T00:00:00Z") }
{ "_id" : "b", "mark" : 240, "name" : "b", "created" : ISODate("2015-11-20T00:00:00Z") }
{ "_id" : "a", "mark" : 208, "name" : "a", "created" : ISODate("2015-03-22T00:00:00Z") }
我希望用戶B的最好成績是240和在2015-03-25做出,用戶獲得最佳成績208,並於2015-03-21做出。
我理解這個問題是
...
"created" : {$max : "$created"}
...
,但我不知道我應該把什麼蓄能器,或者我有一個錯誤的觀念做了這樣的功能? 對不起,我在mongodb上很新,希望我能在這裏有一些見解。
謝謝
感謝notionquest,但得到一個錯誤的日期用戶....我們是否有類似SQL加入有關MongoDB –
哪個用戶得到錯誤的日期?你能提供這些數據嗎? – notionquest
對不起夥伴我發現這是我的錯誤=) –