2014-03-07 53 views
1

我有一個像蒙戈DB更新一個字段與另一個jsondata

{ 
    "_id": ObjectId("531963b60748a6078fe4f345"), 
    "acces": "172.1.6.2.18", 
    "adapter": "Win 9", 
    "flavour": "LokiSnap", 
    "jobid": "8", 
    "os": "VM-WIN7-32", 
    "results": "", 
    "tests": "Test01" 
} 

這裏result領域的蒙戈db表是""。 如何更新基於jobid

更新表後,用{"test" : "conenct","os":"osf"}這個表值result

{ 
"_id": ObjectId("531963b60748a6078fe4f345"), 
"acces": "172.1.6.2.18", 
"adapter": "Win 9", 
"flavour": "LokiSnap", 
"jobid": "8", 
"os": "VM-WIN7-32", 
"results": { 
    "test": "conenct", 
    "os": "osf" 
}`, 
"tests": "Test01" 

}

+0

不要做別的答案。這將取代整個文檔,而不僅僅是結果字段。 –

回答

5

是的,使用$set這樣你就不會破壞整個文件,只是設置字段/場

這是更新一個文檔查詢

db.coll.update(
    {"jobid": "8"}, // the filter based on jobid 
    { 
     $set: { "results": { "test": "conenct", "os": "osf" } } 
    } 
) 

這是查詢更新所有文檔

db.coll.update(
    {"jobid": "8"}, // the filter based on jobid 
    { 
     $set: { "results": { "test": "conenct", "os": "osf" } } 
    } , 
    { multi: true } 
) 

注意: - 在這裏,「coll」是您的收藏名稱。

2

使用$set這樣你就不會破壞整個文檔,只需設置一個字段

coll.update(
    { "_id": ObjectId("531963b60748a6078fe4f345") }, // the filter 
    { 
     $set: { "results": { "test": "conenct", "os": "osf" } }, 
    } 
)