【发布时间】:2021-09-06 14:13:13
【问题描述】:
这是我的数据的样子:
{"_id":{"$oid":"61361d140e9b57aded3f164f"},"FeatureName":"AI Box Kreis (14)","radius":29.85,"x_TCP":-52.7541694301,"y_TCP":-98.7192782699,"z_TCP":-1.4229479066,"w_TCP":179.9808127426,"p_TCP":-0.0080311453,"r_TCP":0.1707167947,"exp1":5,"ExtractionState":"NoGoodContrast","ExtractionQuality":0,"avgBright":21.9513334771,"stdBright":3.3364276129,"RobotPoseName":"Position_1","J1":-8.5,"J2":49.32,"J3":-86.37,"J4":10.74,"J5":-7.33,"J6":170,"J7":0,"EvaluationFilename":"FeatureData_Position_1_Messung 2.fml","MeasurementFilename":"ascii_Position_1_Messung 5.txt","SceneFilename":"Messung 2_sc.png","point_file":"D:\\LRZSync\\Messungen\\Kreis_14_x_-50_y_-100_100_10/3D-Measurements\\Position_1_Messung 2.txt","points":1443,"points_ply":null,"version":"master","user":"niclas","Messreihe":"test","date":{"$date":"2021-09-06T13:52:20.000Z"}}
当我更新我的数据时,我会检查是否有任何重复的代码:
issue = collection.aggregate([{'$sort': {'date': 1}},
{'$group': {'_id': {'FeatureName': '$FeatureName', 'ExposureTime': '$exp1',
'Joint1': '$J1', 'Joint2': '$J2', 'Joint3': '$J3',
'Joint4': '$J4',
'Joint5': '$J5', 'Joint6': '$J6', 'Joint7': '$J7'},
'unique_ids': {'$addToSet': '$_id'},
'count': {'$sum': 1}}},
{'$match': {'count': {'$gt': 1}}}])
for matches in issue:
del matches['unique_ids'][0]
for i in matches['unique_ids']:
remove.append(i)
'$sort' 应该按日期对组内的重复项进行排序,因此我的 unique_ids 列表具有按日期对每个重复项进行排序的 ObjectId。首先是“最旧”的 ObjectId,最后一个是“最新的”。 实际结果是 ObjectId 未排序,因此第一个可能是最旧的,但不一定是。
是否可以按日期在组内排序,如果可以,有人可以帮我解决这个问题吗?
这是我的输出:
{'_id': {'FeatureName': 'AI Box Kreis (14)', 'ExposureTime': 5, 'Joint1': -8.28, 'Joint2': 37.65, 'Joint3': -77.14, 'Joint4': 4.76, 'Joint5': -16.49, 'Joint6': 175.87, 'Joint7': 0}, 'unique_ids': [ObjectId('6137239fc1397e6a8fb3a965'), ObjectId('61372390f3ba8e37db3f98a9'), ObjectId('613723ac0c8e9387544bf28e')], 'count': 3}
unique_ids 中的 ObjectIds 应该按日期排序,但它们不是。
【问题讨论】:
标签: mongodb aggregation-framework pymongo