Mongodb oppdaterer et stykke data, sett inn hvis det ikke eksisterer

Mongodb Update Piece Data



grammatikk

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

Test datamodell

Registrer antall operasjoner per ansatt per dag

{ '_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'})

Utfør trinn +1-operasjon på operander, søk basert på primærnøkkelen til name_1_operDate_1, og øk +1 hvis den eksisterer. Hvis det ikke er noen post, er sporene 1.



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

resultat:



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

Dette er tilfelle der den primære nøkkelen eksisterer, +1-operasjoner utføres på operander, og et stykke data som ikke eksisterer blir oppdatert



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

resultat:

// 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' }