我在MongoDB中有两个集合:
测试包含评估分数,其中包括属性“_vehicle_id”
我需要返回在过去5次测试中至少有3次得分超过70分(存储为int)的所有车辆(使用属性“unit_score”)。在
我独自一人读了很多文件。到目前为止,我的工作是检索所有人的最后5个结果,然后在Python中迭代,但是当我每30秒处理10000个测试时,这是非常低效的。。。在
因此,我正在寻找一种方法,让MongoDB/PyMongo只返回有3个以上匹配的车辆文档,其中unit_得分>70。在
我当前有以下代码,它返回每个匹配车辆的ObjectId(),但我希望它为每个匹配项返回vehicle对象:
db.tests.aggregate([
{ "$match" : { 'statuscode' : '404', 'datetime' : { "$gte" : "2013-11-22 15:05:35" } } },
{ "$group" : { "_id" : "$_vehicle_id", "count" : { "$sum" : 1 }}},
{ "$match" : { "count" : { "$gt" : 3 } } }
])
日期将是动态的(在最后x分钟内),但出于测试目的,它现在是静态的。在
我看过“$project”,但我不确定这是否适合返回关联的对象。_vehicle_id是一个bson ObjectId(),所以我希望它能像车辆数据库。找到一个(“$\u vehicle_id”),但我担心没有。。。在
谢谢你的帮助。在
MongoDB不支持联接,因此单个MongoDB查询(无论是})只能访问单个集合中的文档。在
find
还是{因此,在本例中,您必须跟踪您的
test.aggregate
调用,该调用通过一个db.vehicles.find({_id: {$in: vehicle_ids}})
查询来获取这些ID的车辆文档,其中vehicle_ids
是根据aggregate
结果构建的ID数组。在相关问题 更多 >
编程相关推荐