@@ -321,6 +321,107 @@ describe('mongoose instrumentation [common]', () => {
321321 expect ( statement . document ) . toEqual ( expect . objectContaining ( document ) ) ;
322322 } ) ;
323323
324+ it ( 'instrumenting insertMany operation' , async ( ) => {
325+ const documents = [
326+ {
327+ firstName : 'John' ,
328+ lastName : 'Doe' ,
329+ 330+ } ,
331+ {
332+ firstName : 'Jane' ,
333+ lastName : 'Doe' ,
334+ 335+ } ,
336+ ] ;
337+ await User . insertMany ( documents ) ;
338+
339+ const spans = getTestSpans ( ) ;
340+ expect ( spans . length ) . toBe ( 1 ) ;
341+ assertSpan ( spans [ 0 ] as ReadableSpan ) ;
342+ expect ( spans [ 0 ] . attributes [ SEMATTRS_DB_OPERATION ] ) . toBe ( 'insertMany' ) ;
343+ const statement = getStatement ( spans [ 0 ] as ReadableSpan ) ;
344+ expect ( statement . documents ) . toEqual ( documents ) ;
345+ } ) ;
346+
347+ it ( 'instrumenting bulkWrite operation' , async ( ) => {
348+ const operations = [
349+ {
350+ insertOne : {
351+ document : {
352+ firstName : 'Jane' ,
353+ lastName : 'Doe' ,
354+ 355+ age : 25 ,
356+ } ,
357+ } ,
358+ } ,
359+ {
360+ updateMany : {
361+ filter : { age : { $lte : 20 } } ,
362+ update : { $set : { age : 20 } } ,
363+ } ,
364+ } ,
365+ {
366+ updateOne : {
367+ filter : { firstName : 'Jane' } ,
368+ update : { $inc : { age : 1 } } ,
369+ } ,
370+ } ,
371+ { deleteOne : { filter : { firstName : 'Michael' } } } ,
372+ {
373+ updateOne : {
374+ filter : { firstName : 'Zara' } ,
375+ update : {
376+ $set :
{ lastName :
'Doe' , age :
40 , email :
'[email protected] ' } , 377+ } ,
378+ upsert : true ,
379+ } ,
380+ } ,
381+ ] ;
382+ await User . bulkWrite ( operations ) ;
383+
384+ const spans = getTestSpans ( ) ;
385+ expect ( spans . length ) . toBe ( 1 ) ;
386+ assertSpan ( spans [ 0 ] as ReadableSpan ) ;
387+ expect ( spans [ 0 ] . attributes [ SEMATTRS_DB_OPERATION ] ) . toBe ( 'bulkWrite' ) ;
388+ const statement = getStatement ( spans [ 0 ] as ReadableSpan ) ;
389+ expect ( statement . operations ) . toEqual ( [
390+ {
391+ insertOne : {
392+ document : {
393+ firstName : 'Jane' ,
394+ lastName : 'Doe' ,
395+ 396+ age : 25 ,
397+ } ,
398+ } ,
399+ } ,
400+ {
401+ updateMany : {
402+ filter : { age : { $lte : 20 } } ,
403+ update : { $set : { age : 20 } } ,
404+ } ,
405+ } ,
406+ {
407+ updateOne : {
408+ filter : { firstName : 'Jane' } ,
409+ update : { $inc : { age : 1 } } ,
410+ } ,
411+ } ,
412+ { deleteOne : { filter : { firstName : 'Michael' } } } ,
413+ {
414+ updateOne : {
415+ filter : { firstName : 'Zara' } ,
416+ update : {
417+ $set :
{ lastName :
'Doe' , age :
40 , email :
'[email protected] ' } , 418+ } ,
419+ upsert : true ,
420+ } ,
421+ } ,
422+ ] ) ;
423+ } ) ;
424+
324425 it ( 'instrumenting aggregate operation' , async ( ) => {
325426 await User . aggregate ( [
326427 { $match : { firstName : 'John' } } ,
0 commit comments