2014-10-01 174 views
0

我試圖更新文檔中的一個值,我還沒有看到一個示例,顯示我需要做什麼。以下是我的文檔的外觀:Mongo嵌套對象數組更新

{ 
    "_id" : ObjectId("5429e8a53150d03d541c7a53"), 
    "foo" : { 
     "bar" : { 
      "0" : { 
       "email" : { 
        "0" : "[email protected]" 
       } 
      } 
     } 
    } 
} 

這當然不是我的真實對象,而是表示結構。如何將[email protected]更新爲[email protected]

另外我將如何刪除相同的元素?

此外(bunus點)我將如何更新這個使用php Mongo類?

+0

你使用任何類型的PHP庫來與返回的mongo json對象進行交互嗎? – Jason 2014-10-01 17:20:06

+0

我正在使用的應用程序使用此:http://php.net/manual/en/class.mongo.php我知道已棄用,但我假設應用程序的其餘部分也依賴於它,所以改變這並不容易。有人試圖在這個班上寫一個包裝,但是做得不好,所以我寧願避免它。 – 2014-10-01 17:32:01

+0

僅供參考,這是我的第一次嘗試,它不起作用:db.test.update({「foo.bar.0」:「email」},{$ set:{「0」:「[email protected]」 }}); – 2014-10-01 17:40:14

回答

0

好吧,我想通了。這是你如何做到這一點的控制檯:

db.test.update({"foo.bar.0.email" : {"0":"[email protected]"} },{$set:{"foo.bar.0.email.0":"[email protected]"}}); 

這是你使用蒙戈類

$db = new Mongo("connection stuff"); 

$condition = array('foo.bar.0.email' => array('0' => '[email protected]')); 
$data = array('$set' => array('foo.bar.0.email.0' => '[email protected]')); 

$db->test->update($condition, $data); 

我希望這可以幫助別人,因爲我花了幾個小時圖如何做到這一點在PHP這一點。