2

フォームにデータがあります

{userid: 123,
actiontype: 'loggedin',
timestamp: date-time}

userid と actiontype の一意の組み合わせのデータをグループ化し、最新のタイムスタンプ値を持つドキュメントを返すクエリを実行したいと考えています。

どうすればこれを行うことができますか?現時点では、検索を実行してから、返された値を配列 (python と pymongo) にスローし、そこで操作を実行することを考えています。ただし、これをmongodbで直接行う方がはるかにエレガント/効率的だと思います。

4

1 に答える 1

6

Mongo グループ関数でそれを行うことができます。次のコードは、その方法を示しています。

db.stack.group(
{
    keyf: function(doc) {
        return {
            userid : doc.userid, 
            actiontype : doc.actiontype
        };
    },
    reduce: function(obj,prev) {
        if (prev.maxdate < obj.timestamp) { 
            prev.maxdate = obj.timestamp; 
        } 
    },
    initial: {maxdate:0}
});
于 2012-07-05T08:03:38.290 に答える