mongodbはデータの一部を更新し、存在しない場合は挿入します



Mongodb Update Piece Data



文法

col.update(key, data, {upsert:true,multi:false})

テストデータモデル

1日あたりの従業員1人あたりの操作数を記録します

{ '_id': ObjectId('5dc8d777347c0000ca000505'), 'name': 'tom', 'company': '1001', 'operands': 0, 'operDate': '2019-11-10' } #Create compound index with name and operDate db.getCollection('workload').createIndex({name:1,operDate:1},{unique:true,name:'name_1_operDate_1'})

オペランドに対してインクリメント+1操作を実行し、name_1_operDate_1の主キーに基づいてクエリを実行し、存在する場合はインクリメント+1を実行します。レコードがない場合、sperandsは1です。



db.getCollection('workload').update({name:'tom',pk:'2019-11-10'}, {$inc:{operands:1}},{upsert:true})

結果:

{ '_id': ObjectId('5dc8fdafb0228607a14bcc86'), 'name': 'tom', 'pk': '2019-11-10', 'operands': 1 }

これは、主キーが存在し、オペランドに対して+1演算が実行され、存在しないデータが更新されている場合です。



db.getCollection('workload').update({name:'lisa',pk:'2019-11-11'}, {$inc:{operands:10}},{upsert:true})

結果:

// 1 { '_id': ObjectId('5dc901dab0228607a14bcc8c'), 'name': 'lisa', 'pk': '2019-11-11', 'operands': 10 } // 2 { '_id': ObjectId('5dc901e3347c0000ca000507'), 'name': 'tom', 'company': '1001', 'operands': 1, 'operDate': '2019-11-10' }