У меня много коллекций.У меня есть особенно два типа коллекций: 1.коллекции, соответствующие началу визуализации контента в платформе электронного обучения;2. коллекции, соответствующие концу визуализации этого контента.Вот пример коллекции визуализации начала и конца:
Начальная визуализация:
"statement" : {
"actor" : {
"objectType" : "Agent",
"name" : "exemple1@gmail.com",
"mbox" : "mailto:exemple1@gmail.com"
},
"verb" : {
"id" : "http://adlnet.gov/expapi/verbs/launched",
"display" : {
"en" : "Launching the next piece of learning content",
}
},
"object" : {
"objectType" : "Activity",
"id" : "https://exemple1.com/activities/plannode=5857",
"definition" : {
"name" : {
"en" : "calculs",
},
"type" : "http://id.tincanapi.com/activitytype/legacy-learning-standar"
}
},
"context" : {
"platform" : "exemple",
"language" : "en",
},
"timestamp" : "2017-01-16T23:45:06+01:00",
"id" : "0d7c852d-f1bf-45be-8a25-aff286bf1c30",
"version" : "1.0.0"
},
Конечная визуализация:
"statement" : {
"actor" : {
"objectType" : "Agent",
"name" : "exemple1@gmail.com",
"mbox" : "mailto:exemple1@gmail.com"
},
"verb" : {
"id" : "http://adlnet.gov/expapi/verbs/terminated",
"display" : {
"en" : "Launching the next piece of learning content",
}
},
"object" : {
"objectType" : "Activity",
"id" : "https://exemple1.com/activities/plannode=5857",
"definition" : {
"name" : {
"en" : "calculs",
},
"type" : "http://id.tincanapi.com/activitytype/legacy-learning-standar"
}
},
"context" : {
"platform" : "exemple",
"language" : "en",
},
"timestamp" : "2017-01-16T23:45:06+01:00",
"id" : "0d7c852d-f1bf-45be-8a25-aff286bf1c30",
"version" : "1.0.0"
},
Теперь я хочу сгруппировать тезисысбор по object.id
и вычисление продолжительности визуализации контента = метка времени (визуализация конца контента) - метка времени (визуализация начала контента).
Я пробую следующий код, но он не работает:
db.statements.aggregate([
{$match:{'statement.verb.id':{"$in":["http://adlnet.gov/expapi/verbs/launched", "http://adlnet.gov/expapi/verbs/terminated"]}}]},
{$group:{_id:{
objectid: "$statement.object.id",
learner: "$statement.actor.mbox"
},
duration : {$subtract: ["$timestamp", "$timestamp"}]}}
}
}
])
Может ли кто-нибудь помочь мне рассчитать продолжительность между этими двумя коллекциями (продолжительность должна бытьрассчитывается на основе двух полей с одинаковым именем: отметка времени.