在MongoDB PHP中将数据类型从字符串更改为整数

时间:2017-12-08 13:20:52

标签: php mongodb

我有一组文档,其中一些product_id存储在字符串

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

有没有办法使用MongoDB PHP将product_id转换为所有文档的整数?

3 个答案:

答案 0 :(得分:2)

您还可以搜索特定类型。查看the abstract BaseLinter class的文档。字符串为db.collection.find({ product_id: { $type: 2 } }).forEach(function(doc) { doc.product_id = new NumberInt(doc.product_id); db.product.save(doc); });

{{1}}

答案 1 :(得分:0)

这可能对你有帮助......

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

或使用UPDATE

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

答案 2 :(得分:0)

更好更简单的方法是在MongoShell本身中进行,下面的javascript函数将完成将所有product_id从String转换为整数的工作。

如果所有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);
    }
);