我有一组文档,其中一些product_id
存储在字符串
[
{
"_id": ObjectId("foobar1"),
"product_id": "1"
},
{
"_id": ObjectId("foobar2"),
"product_id": 2
}
]
有没有办法使用MongoDB PHP将product_id
转换为所有文档的整数?
答案 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);
}
);