2012-06-14 54 views
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 
} 

眼下,在應用端的錯誤是解決了,但現在我們必須清理數據庫。該監獄只保留每個用戶的最新記錄/文件。 一種方法是在應用程序端處理此操作:從一個用戶加載所有數據,按日期排序,從一個用戶刪除所有數據並將最新條目寫回到mongoDB。

但是:是不是可以處理一個mongoDB就像在MySQL上的關節刪除?

謝謝你的幫助或提示!

回答

0

是不是可以處理一個mongoDB就像在MySQL上用關節刪除一樣?

編號MongoDB根本不支持連接。

但是,MongoDB確實有排序。因此,您可以運行腳本來獲取每個用戶,按日期對其進行排序,然後刪除舊用戶。

此外,請不要您可以覆蓋_id字段。它不是ObjectId()。根據你的描述,你有一個獨特的user_name,所以爲什麼不簡單地使用它作爲_id

+0

謝謝你的信息。有沒有辦法返回所有文件(.... find();),但只限制一個用戶名(user_name)和matchID(只返回第一個)?我仍然知道如何限制返回的文檔的數量。 –