2017-12-08 18 views
0

私はproduct_idのいくつかは、文字列変更データ型

[ 
    { 
    "_id": ObjectId("foobar1"), 
    "product_id": "1" 
    }, 
    { 
    "_id": ObjectId("foobar2"), 
    "product_id": 2 
    } 
] 

に格納された文書のセットを持っているのMongoDB PHPを使用してすべてのドキュメントを整数にproduct_idを変換する方法はありますか?

答えて

0

これはあなたを助けるかもしれない... javascript関数の意志以下の仕事をして良いと簡単な方法はMongoShell自体にそれをやってしまう

db.collection.find().forEach(function(data) { 
    db.collection.update({_id:data._id},{$set:{product_id:parseInt(data.product_id)}}); 
}) 
+0

ありがとうございます。私はすでにMongo Shellを使ってこのことを認識しています。私はMongoDB PHPで何かを探していますが、それは明らかに質問で言及されています。 – pmenezes

0

db.collection.find().forEach(function(product) { 
    product.product_id= new NumberInt(product.product_id); 
    db.collection.save(product); 
}); 

OR使用してUPDATEすべてproduct_idを文字列から整数に変換します。

全てPRODUCT_ID列が整数に変換することができる場合、これは動作する、PRODUCT_IDの可能な値は「1」、「34343」、「23」とすることができると言う、...

db.collection.find({product_id: {$exists : true}}).forEach(
    function(obj) { 
     obj.product_id = new NumberInt(obj.product_id); 
     db.collection.save(obj); 
    } 
); 
+0

あなたはこの方法ですべての文書を調べていませんか? '' product_id ":" 1 "'は '' product_id ":2'が存在する分だけ存在します。 –

+0

はい、それはすべての文書に行きますが、最初の条件は 'product_id'が文書に確実に存在するようにすることです。 –

1

特定のタイプを検索することもできます。 $typeのドキュメントをご覧ください。文字列は$type: 2

db.collection.find({ 
    product_id: { 
     $type: 2 
    } 
}).forEach(function(doc) { 
    doc.product_id = new NumberInt(doc.product_id); 
    db.product.save(doc); 
}); 
関連する問題