2017-10-19 133 views
0

我對MongoDB及其查詢非常陌生,但目前我無法更改字符串中'字段'的字符串。在MongoDB中使用shell或PyMongo中的日期字符

我的數據庫和集合都稱爲thdr。我想將「PSTNG_DATE」列更改爲日期格式。目前格式爲'19 .10.2017'。

MongoDB Compass

我通過線程去這裏,並試圖一對夫婦的東西,但它似乎並沒有工作。我知道我可以通過MongoDB Shell或使用PyMongo來更改它。

我非常感謝您的幫助和指導,非常感謝。

**更新**這就是我目前所面對的,這讓我的語法錯誤

db = db.getSiblingDB('thdr'); 
var requests = []; 
db.thdr.find().forEach(doc => { 
    var date = yourFunctionThatConvertsStringToDate(doc.PSTNG_DATE); 
    requests.push({ 
     'updateOne': { 
      'filter': { '_id': doc._id }, 
      'update': { '$set': { 
       "PSTNG_DATE": date 
      } } 
     } 
    }); 
    if (requests.length === 500) { 
     db.thdr.bulkWrite(requests); 
     requests = []; 
    } 
}); 

if(requests.length > 0) { 
    db.thdr.bulkWrite(requests); 
} 
+0

可能的重複https://stackoverflow.com/questions/10942931/converting-string-to-date-in-mongodb – JohnnyHK

回答

1

你可以做與bulkWrite:

db = db.getSiblingDB('yourDatabaseName'); 
var requests = []; 
db.yourCollectionName.find().forEach(doc => { 
var strDate = doc.PSTNG_DATE; 
var dateParts = strDate.split("."); 
var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]); 
    requests.push({ 
     'updateOne': { 
      'filter': { '_id': doc._id }, 
      'update': { '$set': { 
       "PSTNG_DATE": date 
      } } 
     } 
    }); 
    if (requests.length === 500) { 
     db.yourCollectionName.bulkWrite(requests); 
     requests = []; 
    } 
}); 

if(requests.length > 0) { 
    db.yourCollectionName.bulkWrite(requests); 
} 

你不得不更新每個文件。因此,您可以將updateOne()收集方法添加到數組(requests)並在bulkWrite(...)中執行bulkWrite(...) 直接在您的mongodb服務器上加載腳本,如https://docs.mongodb.com/manual/reference/method/load/所示,並在那裏執行,而不是在每個文檔上進行更新。希望這可以幫助。

僅供參考find()如果你喜歡,你可以添加一個查詢(它甚至是首選的,特別是如果你搜索索引字段)。這將減少負載和一次要更換的文件數量。

+0

將db名稱更改爲thdr,將腳本粘貼到.js文件並使用load方法在蒙戈殼中。我收到一個語法錯誤。 '> load(C:\ Users \ me \ Desktop \ asd \ update2.js) 2017-10-19T15:53:15.917 + 0200 E QUERY [thread1] SyntaxError:malformed Unicode 字符轉義序列@(shellhelp1):1 :24 error2:SyntaxError:格式錯誤的Unicode字符轉義序列@(shellhelp1):1: 24' –

+0

您忘記了這個「也許?加載(」C:\ Users \ me \ Desktop \ asd \ update2.js「) –

+0

我用修改後的.js更新了帖子,使用「did not do the trick –

相關問題