我有很多这样结构的文档:
"_id" : ObjectId("52be9d8dbfbc2c17e6a4e06b"),
"contest" : "Teamcode",
"data" : [
{
"status" : "0",
"message" : "Correct",
"runtime" : 0.10917782783508301,
"score" : 20
},
{
"status" : "0",
"message" : "Correct",
"runtime" : 0.12033200263977051,
"score" : 20
},
{
"status" : "0",
"message" : "Correct",
"runtime" : 0.35556793212890625,
"score" : 20
},
{
"status" : "0",
"message" : "Correct",
"runtime" : 1.8789710998535156,
"score" : 20
},
{
"status" : "0",
"message" : "Correct",
"runtime" : 0.9521079063415527,
"score" : 20
}
],
"id" : 242,
"lang" : "c",
"problem" : "roate",
"result" : [ ],
"score" : 100,
"status" : "done",
"time" : 1388223885.051975,
"user" : {
"email" : "orizont1",
"user_class" : 0,
"name" : "orizont1"
}
}
在一场比赛中,每个用户针对每个问题提交了多次。 我有一个名为“竞赛”的变量,我想针对每个问题获取每个用户的最后一次提交。我使用 pymongo。
我该怎么做?
最佳答案
查询可以这样形成:
对于每个问题(例如 Teamcode 问题),给我所有用户的最后一次提交
-> 查询时,请记住对象数组(数据)的大小大于等于 1。
-> query: { "contest": "Teamcode", "data": { $size: {$gte:1} } }
-> 投影:{"data":{$slice:-1}, id:1}。 $slice:-1 将为您提供每个文档中与查询匹配的对象数组(数据)的最后一个元素。
对于$slice,请阅读:
http://docs.mongodb.org/manual/reference/operator/projection/slice/#proj._S_slice
YOUR_COLLECTION_NAME.find( { "contest": "Teamcode" , "data": { $size: {$gte:1} } }, {"data":{$slice:-1}, id:1} )
关于python - MongoDB 查找每个用户的最后一次提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788648/