0

我是 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
}

现在,应用端的bug已经解决了,但是现在我们必须清理数据库。监狱只保留每个用户的最新记录/文档。一种方法是在应用程序端处理此问题:从一个用户加载所有数据,按日期排序,从一个用户删除所有数据并将最新条目写回 mongoDB。

但是:难道不能像在 MySQL 上使用关节删除那样处理 mongoDB 吗?

感谢您提供任何帮助或提示!

4

1 回答 1

0

是否有可能处理一个 mongoDB,比如在 MySQL 上使用关节删除?

不,MongoDB 根本不支持连接。

但是,MongoDB 确实有排序功能。所以你可以运行一个脚本来获取每个用户,按日期对他们进行排序,然后删除旧的。

另外,请不要让您覆盖该_id字段。它不必. ObjectId()根据您的描述,您有一个独特的user_name,那么为什么不简单地将其用作_id

于 2012-06-14T18:19:21.173 回答