好吧,我已經使用了一段時間的MongoDB,但我不知道如何處理這種情況。
場景是:我在 MongoDB 中插入了資料。我已經以 JSON 格式匯出了資料,它是這樣的:
[
{
"_id": { "$oid": "60ff324f41c4d5b96054390d" },
"field": {
"due_date": { "$date": "2021-11-03T00:09:18.271Z" }
}
}
]
你可以看到:
_id是{ "$oid": "60ff324f41c4d5b96054390d" }和date是{ "$date": "2021-11-03T00:09:18.271Z" }。
因此,問題是嘗試使用 Mongoose 插入另一個資料庫。我想測驗一些隔離的功能,所以我不想在其他環境中使用這些值,所以我使用insertMany()了之前匯出的 JSON。
(也許有一種更優雅的方式來匯入 JSON 檔案,但僅用于測驗目的)
await model.insertMany(JSON.parse(fs.readFileSync('./data.json').toString()))
但問題就在這里:它拋出一個錯誤,因為我的架構說這_id是一個ObjectId并且due_date是一個Date物件,但它們實際上是作為物件讀取的:{$oid: ""}和{$date: ""}
ValidationError: model validation failed: _id: Cast to ObjectId failed for value "{ '$oid': '60ff324f41c4d5b96054390d' }" (type Object) at path "_id", field.due_date: Cast to date failed for value "{ '$date': '2021-11-03T00:09:18.271Z' }" (type Object) at path "field.due_date"
所以問題是:有沒有辦法在插入時使用貓鼬來投射$oid和$date物件?
此外,我設法使用一個非常丑陋的腳本來插入值,該腳本迭代每個值并檢查物件是否為$oid或$date并修改值......但它有效。
所以問題不是:“有沒有辦法做到這一點?” 但是“有沒有辦法直接使用貓鼬函式insertMany自動進行轉換?”
謝謝。
uj5u.com熱心網友回復:
該{"$oid": ...}和{"$date":...}結構是MongoDB的擴展JSON物件,因為JSON沒有任何型別Date或ObjectId。
為了插入這些值,您需要使用了解這種擴展格式的 JSON 決議器。
一種可能性是json_util包含在bson.
或者您可以使用mongoimport讀取 JSON 檔案并為您執行插入操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362486.html
下一篇:簡單的條形圖和軸并排。SVG圖形
