Skip to content

Instantly share code, notes, and snippets.

@autermann
Created July 9, 2013 09:58
Show Gist options
  • Save autermann/5956176 to your computer and use it in GitHub Desktop.
Save autermann/5956176 to your computer and use it in GitHub Desktop.
var result = db.measurements.aggregate({
"$group": {
"_id": {
"sensor": "$sensor._id",
"user": "$user",
"time": "$time",
"geom": "$geometry"
},
"tracks": { "$addToSet": "$track" }
}
}, {
"$match": { "tracks.1": { "$exists": true} }
}, {
"$group": { "_id": "$tracks" }
}, {
"$group": {
"_id": 1,
"tracks": {
"$addToSet": "$_id"
}
}
}).result[0].tracks
for (var i = 0; i < result.length; ++i) {
var tracksWithLength = [];
for (var j = 0; j < result[i].length; ++j) {
tracksWithLength[j] = {
track: result[i][j],
length: db.measurements.count({ track: result[i][j] })
}
}
tracksWithLength.sort(function(a, b){ return a.length - b.length })
for (j = 1; j < tracksWithLength.length; ++j) {
db.measurements.remove({
track: tracksWithLength[j].track
})
db.tracks.remove({
_id: tracksWithLength[j].track.getId()
})
}
}
var tracks = db.tracks.aggregate({ "$group": { "_id": 1, "tracks": { "$addToSet": "$_id" } } }).result[0].tracks
for (var i = 0; i < tracks.length; ++i) {
var count = db.measurements.count({
track: DBRef("tracks", tracks[i])
});
print(tracks[i] + ": " + count)
if (count == 0) {
db.tracks.remove({ "_id": tracks[i] })
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment