0
這是一個後續行動平展嵌套的MongoDB文檔
Flatten a nested object in MongoDB and rename
使用上所提到的答案後,一些數據類型得到接受和他們而一些投誤差變平
can't convert undefined to object
例如: - 的文件在其上的數據出現故障: -
{
"id" : "1415304490",
"color" : {
"1391" : "Grey"
},
"name":"Random Name"
}
,我使用的corrosponding功能: -
db.suggestion.find().forEach(function(doc) {
var color;
Object.keys(doc.color).forEach(function(key) {
color = doc.color[key];
});
db.suggestion.update(
{ _id: doc._id },
{ $set:
{ color: color }
}
);
})
它跑20,000之前的文件,但現在沒有這個文件上。
另外,如果我嘗試通過在一個單一的ID運行它運行相同的代碼,即
db.suggest.find({id:"12"})
它再次工作正常,因爲它應該是它早前失敗相同的文檔。
我也試圖創建一個解決,因爲它是運行發現每一個文件,即
db.suggestion.find().forEach(function(dest) {
var id_temp=dest.id;
db.suggestion.find({id:id_temp}).forEach(function(doc) {
var color;
Object.keys(doc.color).forEach(function(key) {
color = doc.color[key];
});
db.suggestion.update(
{ _id: doc._id },
{ $set:
{ color: color }
}
);
})
})
它仍然失敗。我很不確定代碼的這種奇怪的行爲。
我同意,但是爲什麼要把代碼失敗測試文檔中我因爲它有一個顏色字段 –
@AyushAggarwal它不會失敗。我只是複製了你的文檔,然後「再次」運行它。同樣的結果,它完美地轉換它。我的代碼,而不是**你的**代碼。我看到的問題是,您不是簡單地應用您提供的代碼。我認爲不這樣做的唯一原因是,實際上你的文件沒有你所說的結構。但是在問題中提出的結構中,它工作得很好,並且當然會跳過任何沒有顏色鍵轉換的地方。這是你的問題中的錯誤,這就是解決的問題。 –
我正在對您的代碼進行編輯,因爲在robomongo中運行腳本時,它在ops = [... ops]中顯示爲「未知」中的錯誤。 。因此,我必須將其更改爲解決方法,並使其更新爲一個,而不是像您所做的那樣批量更新。休息一下,我認爲robomongo存在一個問題,我現在在shell中運行它。你建議的任何其他MongoDB GUI? –