如何将mongodb字段数据类型从NumberLong更改为Double?
如何将mongodb字段数据类型从NumberLong更改为Double 我试过但没有成功:如何将mongodb字段数据类型从NumberLong更改为Double?,mongodb,double,type-conversion,Mongodb,Double,Type Conversion,如何将mongodb字段数据类型从NumberLong更改为Double 我试过但没有成功: db.getCollection('mycoll').find({'_id':10150097174480591}).forEach( function (x) { x._id = new Double(x._id); db.getCollection('mycoll').save(x); }); 对象的“类型”需要重铸。批量更好,并通过以下方式过滤: var bulk=db.use
db.getCollection('mycoll').find({'_id':10150097174480591}).forEach( function (x) {
x._id = new Double(x._id);
db.getCollection('mycoll').save(x);
});
对象的“类型”需要重铸。批量更好,并通过以下方式过滤:
var bulk=db.users2.initializeOrderedBulkOp(),
计数=0;
db.mycoll.find({“\u id”:{“$type”:18}).forEach(函数(doc){
doc._id=parseInt(doc._id.valueOf());
批量插入(doc);
计数++;
如果(计数%1000==0){
bulk.execute();
bulk=db.users2.initializeOrderedBulkOp();
}
});
如果(计数%1000!=0)
bulk.execute();
请注意,因为这是\u id
,所以您需要另一个集合。如果试图处理同一集合中的其他字段,则需要删除并“重置”文档中的字段,以实现更改:
var bulk=db.mycoll.initializeOrderedBulkOp(),
计数=0;
db.mycoll.find({“a”:{“$type”:18}).forEach(函数(doc){
doc.a=parseInt(doc.a.valueOf());
bulk.find({“\u id”:doc.\u id}).updateOne({
“$unset”:{“a”:”“}
});
bulk.find({“\u id”:doc.\u id}).updateOne({
“$set”:{“a”:doc.a}
});
计数++;
如果(计数%500==0){
bulk.execute();
bulk=db.mycoll.initializeOrderedBulkOp();
}
});
如果(计数%500!=0)
bulk.execute();
该\u id
字段是不可变的。您必须使用新的\u id
创建新文档。