Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将mongodb字段数据类型从NumberLong更改为Double?_Mongodb_Double_Type Conversion - Fatal编程技术网

如何将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

如何将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.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
创建新文档。