我是mongoDB的新手,关键是,我们新实现了应用程序中的错误导致多个mongoDB条目而不是更新(编辑过的)文档。 现在,应用程序在线,我们意识到了这个错误并试图解决随之而来的麻烦。
以下情况:@mongoDB有很多包含此结构的文档:
"_id" : ObjectId("4fd9ede5a6b9579f5b000003"),
"USER" : "my_username",
"matchID" : 18809,
"data1" : 2,
"data2" : 1,
"tippDate" : ISODate("2012-06-14T13:57:57Z"),
"data3" : 0
如果用户更改了应用程序中的数据,则应用程序会插入新文档,而不是更新现有文档。
喜欢那个
{
"_id" : ObjectId("4fd9ede5a6b9579f5b000003"),
"USER" : "my_username",
"matchID" : 18809,
"data1" : 2,
"data2" : 1,
"tippDate" : ISODate("2012-06-14T13:57:57Z"),
"data3" : 0
}
{
"_id" : ObjectId("4fd9ede5a6b9579f5b000002"),
"USER" : "my_username",
"matchID" : 18809,
"data1" : 4,
"data2" : 2,
"tippDate" : ISODate("2012-06-14T12:45:33Z"),
"data3" : 0
}
现在,应用程序端的错误已经解决,但现在我们必须清理数据库。 监狱只保留每个用户的最新记录/文件。 一种方法是在应用程序端处理此问题:从一个用户加载所有数据,按日期排序,从一个用户删除所有数据并将最新条目写回mongoDB。
但是:是不是可以在MySQL上处理像mongoDB那样的关节?
感谢您提供任何帮助或提示!
答案 0 :(得分:0)
是不是可以像MySQL上的关节一样处理mongoDB?
没有。 MongoDB根本不支持连接。
然而,MongoDB确实有排序。因此,您可以运行脚本来获取每个用户,按日期对其进行排序,然后删除旧用户。
另外,请注意,您可以覆盖_id
字段。 不是ObjectId()
。根据您的说明,您有一个独特的user_name
,那么为什么不将其简单地用作_id
?