检查mongo中所有记录的字段类型

时间:2015-09-24 09:07:06

标签: mongodb

我正在尝试将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 .. 字段是否已成功转换?

1 个答案:

答案 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数。