1

次のようにデータベースにドキュメントがあります。

{                                                              
"CorePrice" : 1,                                       
"_id" : 166,                                           
"partno" : 76,                                         
"parttype" : "qpnm",                                   
"shipping" : [{                                                                     
    "shippingMethod1" : "ground",                          
    "cost1" : "10"
        },                                                     
     {                      
          "shippingMethod2" : "air",                             
       "cost2" : "11"                                 
    },                                                     
    {                                                              
    "shippingMethod3" : "USPS",                            
    "cost3" : "3"                                  
    },                                                     
    {                                                               
    "shippingMethod4" : "USPS",                             
    "cost4" : 45                                 
    }]
} 

次のコードを使用して繰り返し、 ShippingMethod4 の名前を shippingMethod に変更しようとしています。

remap = function (x)     
{ 
    if (x.shipping) {
        db.foo.update ({ _id:x._id}, 
              { $set: {    
                  "shipping.shippingMethod","x.shipping.shippingMethod4" },     
               $unset:{ "shipping.shippingMethod4":1    
        }}); } }

ただし、次のエラーがスローされます。

"Sun Oct 06 02:09:44.764 JavaScript execution failed: SyntaxError: Unexpected token ,                                                                             

理由がわからない。誰か助けてくれませんか?

4

1 に答える 1

0

私はあなたのために関数を書き直しました。

rename=function(x) { 
    if (x.shipping) {
                   x.shipping[3]={                                                               
                  "shippingMethod" : "USPS",                             
                  "cost4" : 45                                 
                   }  
   }
   db.foo.update({_id:x._id},x)
}

これにより、必要な更新が行われます。もちろん、一般的なケースでは、必要な名前を見つけてそれを使用するためにインデックスを保持するために配送配列を反復処理するループを追加する必要がありますが、演習としてそれを許可します;-)。シェルから rename(x) で呼び出します。

これが役に立てば幸いです、モレノ。

于 2013-10-26T12:56:19.717 に答える