There I have res is original object
{
  time: 2020-07-26T10:39:38.135Z,
  isTransfered: true,
  _id: 5f1d5d6b60755e75b48770a6,
  receiverAccountNumber: '12345678',
  transfererAccountNumber: '11111111',
  receiverName: 'Lê Công Tuyền',
  transfererName: 'Nguyễn Thanh Tuấn',
  amount: 1000000,
  content: "test chuyefo'seajfg",
  payFeeBy: 'transferer',
  type: { name: 'internal', bankCode: 'TUB' },
  __v: 0
}
And I got this result (called res2) is returned object using spread operator res2 = {...res} :
{
  '$__': InternalCache {
    strictMode: true,
    selected: {},
    // alot of key-value
    '$setCalled': Set(0) {},
    ownerDocument: undefined,
    fullPath: undefined,
    emitter: EventEmitter {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: 0,
      [Symbol(kCapture)]: false
    },
    '$options': { skipId: true, isNew: false, willInit: true }
  },
  isNew: false,
  errors: undefined,
  _doc: {
    time: 2020-07-26T10:39:38.135Z,
    isTransfered: true,
    _id: 5f1d5d6b60755e75b48770a6,
    receiverAccountNumber: '12345678',
    transfererAccountNumber: '11111111',
    receiverName: 'Lê Công Tuyền',
    transfererName: 'Nguyễn Thanh Tuấn',
    amount: 1000000,
    content: "test chuyefo'seajfg",
    payFeeBy: 'transferer',
    type: { name: 'internal', bankCode: 'TUB' },
    __v: 0
  },
  '$locals': {},
  '$op': null,
  '$init': true
}
I really dont know about this behavior of spread operator, that a lot of new key-value generated and the object I want to get is in _doc key.
Code is run on Nodejs v12 (nvm use 12)
 
    