我正在尝试将mongo collection location
中的字段> db.location.find().limit(1).pretty()
{
"_id" : ObjectId("56021e0532d9a84a95c6f4ab"),
"_class" : "com.app.core.entity.Location",
"pincode" : 626513,
"district" : "San Jose",
"city" : "San Jose",
"state" : "California",
"countryCode" : "US"
}
从Integer转换为String。现有记录以Integer格式显示这些字段。
db.location.find({pincode: {$exists: true}}).forEach(function(obj) {
obj.pincode = "" + obj.pincode;
db.location.save(obj);
});
我运行了以下脚本来进行转换。
pincode
然而,这花了太长时间,所以我杀了终端。我不确定字段> db.location.find().limit(1).pretty()
{
"_id" : ObjectId("56021e0532d9a84a95c6f4ab"),
"_class" : "com.app.core.entity.Location",
"pincode" : "626513",
"district" : "San Jose",
"city" : "San Jose",
"state" : "California",
"countryCode" : "US"
}
是否已在所有记录中转换为字符串。
我只能检查几条记录,并且它们已成功转换为String。
pincode
有没有办法检查所有记录中的ORA-00911: invalid character
ORA-06512: at line 7
00911. 00000 - "invalid character"
*Cause: identifiers may not start with any ASCII character other than ..
字段是否已成功转换?
答案 0 :(得分:2)
您可以使用MongoDB的bulk来更新您的收藏。
只需将B=A;
B(n:n:end)=[];
更改为您的收藏集即可运行以下脚本。
collectionName
您可以使用以下查询进行检查:
var bulk = db.collectionName.initializeOrderedBulkOp(), count = 0
db.bulk.find({pincode: {$exists: true }}).forEach(function(doc) {
var pincode = doc.pincode.toString;
bulk.find({ "_id": doc._id }).updateOne({
"$set": { "pincode": pincode }});
count++;
if (count % 100 == 0) {
bulk.execute();
bulk = db.collection.initializeUnorderedBulkOp();
}
});
if (count % 100 != 0) bulk.execute();
您可以使用上述查询的db.collection.find({ pincode: { $type: 2 } })
光标来获取字符串格式的.count
数。