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 删除列(修改数据)与随机抽样方法两则的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 删除列(修改数据)与随机抽样方法两则

Pandas数据中列表转换成列随机抽样数据的方法实践经验两则

Pandas数据中列表转换成列随机抽样数据的方法实践经验两则

Pandas数据中列表转换成列随机抽样数据的方法实践经验两则

pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)使用sample函数进行数据列随机抽样

计量︱时间序列数据检验方法总结