2014-04-02 19 views
0

我試圖從mongodb的控制檯使它,但它不工作,因爲我不能像afrray [0] afrray [1] afrray [2]等mongodb的PHP的字符串浮動值

How to change array elements陣列工作

現在,我嘗試從PHP這樣做,但我看到基地(僅適用於零(((

什麼我錯了嗎?

$out = $collection->update(
     array("type" => 'chair'), array('$set' => array('vmfqvfjptu' => floatval('vmfqvfjptu'), 
     'versions.0.content.vmfqvfjptu'=> floatval('versions.0.content.vmfqvfjptu'), 
     'versions.1.content.vmfqvfjptu'=> floatval('versions.1.content.vmfqvfjptu'), 
     'versions.2.content.vmfqvfjptu'=> floatval('versions.2.content.vmfqvfjptu'), 
     'versions.3.content.vmfqvfjptu'=> floatval('versions.3.content.vmfqvfjptu') 
     )), 
     array("multiple" => true) 
); 

如何從databa發送字符串se near floatval('versions.0.content.vmfqvfjptu')?

這個腳本在mongo控制檯中運行良好。有4個腳本。每個人都從數據庫中獲取字符串,將字符串轉換爲浮點並將浮點保存到數據庫(對於集合中的每個文檔)。

db.documents.find({ 'fwtweaeeba' : {$exists : true}}).forEach(function(obj) { 
    obj.fwtweaeeba = parseFloat(obj.fwtweaeeba); 
    db.documents.save(obj); });  

db.documents.find({ 'versions.0.content.fwtweaeeba' : {$exists : true}}).forEach(function(obj) { 
    obj.versions[0].content.fwtweaeeba = parseFloat(obj.versions[0].content.fwtweaeeba); 
    db.documents.save(obj); }); 

db.documents.find({ 'versions.1.content.fwtweaeeba' : {$exists : true}}).forEach(function(obj) { 
    obj.versions[1].content.fwtweaeeba = parseFloat(obj.versions[1].content.fwtweaeeba); 
    db.documents.save(obj); }); 

db.documents.find({ 'versions.2.content.fwtweaeeba' : {$exists : true}}).forEach(function(obj) { 
    obj.versions[2].content.fwtweaeeba = parseFloat(obj.versions[2].content.fwtweaeeba); 
    db.documents.save(obj); }); 

我需要做用PHP一樣的,因爲我每個文檔轉換中有很多領域...

它的工作原理!!!!謝謝你,Sammaye!你真的幫助了我!

foreach($db->documents->find(array("type" => "chair")) as $document){ 
// my_dump($document[_id]); 
    $db->documents->update(
     array('_id' => $document[_id]), 
     array(
      '$set' => array(
       'versions.0.content.axdducvoxb' => (float)$document['versions'][0]['content']['axdducvoxb'], 
       'versions.1.content.axdducvoxb' => (float)$document['versions'][1]['content']['axdducvoxb'], 
       'versions.2.content.axdducvoxb' => (float)$document['versions'][2]['content']['axdducvoxb'], 
       'axdducvoxb' => (float)$document['axdducvoxb'] 
      ) 
     ), 
     array('$multi' => true) 
    ); 


} 
+0

'floatval('versions.0.content.vmfqvfjptu')'參考?它不會引用JS中的任何東西(shell) – Sammaye

回答

0

從你鏈接的問題,下面就值:

db.documents.find({"type": "chair"}).forEach(function(data) { 
    db.documents.update({_id:data._id}, 
         {$set:{'versions.0.content.axdducvoxb': 
           parseFloat(data.versions.0.content.axdducvoxb)}}); 
}) 

是:

foreach($db->documents->find(array("type" => "chair")) as $document){ 
    $db->documents->update(
     array('_id' => $document['_id']), 
     array(
      '$set' => array(
       'versions.0.content.axdducvoxb' => floatval($document['versions'][0]['content']['axdducvoxb']) 
      ) 
     ) 
    ); 
} 

那裏進行。 好的答案

+0

當我使用它時,我會看到零((( – user3469031

+0

@ user3469031)您嘗試發送的結構是什麼?可以顯示完整的輸出示例嗎? – Sammaye

+0

我更正了問題,是否足夠呢? – user3469031

0

對於PHP,這

floatval('versions.0.content.vmfqvfjptu') 

計算爲false。因爲這不是場從數據庫的收集