特定のユーザーと特定の場所の最新の開始および終了タイムスタンプを取得するのが好きです。コレクションはこんな感じ
{ "ActivityList" : [
{ "type" : "exit",
"timestamp" : Date( 1348862537170 ),
"user" : { "$ref" : "userProfile",
"$id" : ObjectId( "4fdeaeeede26fd298262bb80" ) } },
{ "type" : "entry",
"timestamp" : Date( 1348862546966 ),
"user" : { "$ref" : "userProfile",
"$id" : ObjectId( "4fdeaeeede26fd298262bb80" ) } },
{ "type" : "entry",
"timestamp" : Date( 1348870744386 ),
"user" : { "$ref" : "userProfile",
"$id" : ObjectId( "4fdeaf6fde26fd298262bb81" ) } },
{ "type" : "exit",
"timestamp" : Date( 1348878233785 ),
"user" : { "$ref" : "userProfile",
"$id" : ObjectId( "4fdeaf6fde26fd298262bb81" ) } } ],
"Location" : { "$ref" : "loc",
"$id" : ObjectId( "4fd410f0e7e994b59054b824" ) },
"_id" : ObjectId( "4fe8f3c6e7e9ebe3697ee836" ) }
このようなことを試しましたが、機能しません
db.collection.group(
{
keyf: function(doc) {
return {
location :doc.Location._id,
userid : doc.ActivityList.user._id,
actiontype : doc. ActivityList.type
};
},
reduce: function(obj,prev) {
if (prev.maxdate < obj. ActivityList.timestamp) {
prev.maxdate = obj. ActivityList.timestamp;
}
},
initial: {maxdate:0}
});
ご協力いただきありがとうございます。