MongoDB 删除列(修改数据)与随机抽样方法两则
Posted 肖永威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 删除列(修改数据)与随机抽样方法两则相关的知识,希望对你有一定的参考价值。
1. update删除列(修改数据)
MongoDB 删除列与修改数据,都使用update。
update(),更新一条或多条,通过multi参数控制。
db.collection.update(
<query>,
<update>,
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
)
参数解释;
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
updaetOne(),更新一条。
updateMany(),更新多条。
1.1. 删除列
db.getCollection('other').update(, '$unset': "predaydiff": "" , false, true)
1.2. 修改字段名称
db.getCollection('other').update(, '$rename':'row':'days',multi:true);
1.3. 修改数据
db.getCollection('other').update(, '$set':'latestdays':20, 'multi': true)
2. $sample随机抽取数据
$sample (aggregation),从输入文档中随机选择指定数量的文档。
语法:
$sample: size: <positive integer N>
N是随机选择文档的数量。
例如:
db.getCollection('other').aggregate([
'$sample': 'size': 3],
'allowDiskUse':true)
注意:此方法,依赖数据库,性能不高。
3. 通过脚本批量修改数据
var c = db.getCollection('traindatas_update').find(,
'carduser_id':1,'yearmonth':1,'lastdaydiff':1, 'predaydiff':1, 'densitymeandiff':1)
i = 0
while(c.hasNext())
str = c.next()
carduser_id = str.carduser_id
yearmonth = str.yearmonth
lastdaydiff = str.lastdaydiff
predaydiff = str.predaydiff
densitymeandiff = str.densitymeandiff
db.getCollection('traindatas').update('carduser_id':carduser_id,'yearmonth':yearmonth,
'$set':'lastdaydiff':lastdaydiff,'predaydiff':predaydiff,'densitymeandiff':densitymeandiff,'multi':true)
i = i+1
if (i%10000 == 0)
printjson(i)
参考:
Idea King. Mongo系列之update. CSDN博客. 2022.02
以上是关于MongoDB 删除列(修改数据)与随机抽样方法两则的主要内容,如果未能解决你的问题,请参考以下文章
Pandas数据中列表转换成列随机抽样数据的方法实践经验两则
Pandas数据中列表转换成列随机抽样数据的方法实践经验两则
Pandas数据中列表转换成列随机抽样数据的方法实践经验两则
pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)使用sample函数进行数据列随机抽样