2017-05-19 84 views
0

我有文件是這樣的:如何更新MongoDB中的字段?

{ 
    "_id" : ObjectId("591ed2f0470e6ccc143c986e"), 
    "name" : "Planets", 
    "prototype_id" : null, 
    "parameters" : [ 
     "591eefe3470e6cd70c3c9872", 
     "591eefc3470e6c500f3c9872", 
     "591eedbe470e6cd70c3c9871" 
    ], 
    "available" : "1" 
} 

我試圖設置爲[]字段parameters如果值591eefe3470e6cd70c3c9872此數組中的存在。

我想:

$new = array('$set' => array("parameters" => [])); 

$this->collection->update(array("parameters" => "591eedbe470e6cd70c3c9871"), $new); 

它不工作...

+0

對不起,我不需要刪除所有,我需要從陣列 – Blablacar

+1

拔出這個元素你們是不是要設置數組爲[]當查詢發現輸入元素的數組?或試圖從數組中拉出匹配的?像'$ this-> collection-> update(array(),array('$ pull'=> array(「parameters」=>「591eedbe470e6cd70c3c9871」));' – Veeram

回答

1

MongoDB的更新()和save()方法用於更新文檔到一個集合。 update()方法更新現有文檔中的值,而save()方法用save()方法中傳遞的文檔替換現有文檔。

MongoDB的Update()方法

更新()方法中的現有文檔中更新的值。

語法

update()方法的基本語法如下 -

db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)

考慮mycol集合具有以下數據

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} 
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} 
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"My Overview"} 

以下示例將設置標題爲「MongoDB Overview」的文檔的新標題「New MongoDB Tutorial」。

db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}}) 
db.mycol.find() 
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"} 
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} 
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"My Overview"} 

默認情況下,MongoDB將只更新單個文檔。要更新多個文檔,您需要將參數'multi'設置爲true。

db.mycol.update({'title':'MongoDB Overview'}, 
    {$set:{'title':'New MongoDB Tutorial'}},{multi:true}) 
相關問題