title: Destructuring of the object returned by mongodb query result
body: <p>Let's say we start a mongodb query statement as the following:</p>
  <pre class="lang-js prettyprint-override"><code>const user = await db.users.findOne(...);
  console.log(user);
  </code></pre>
  <p>The result is good.</p>
  <pre class="lang-js prettyprint-override"><code>{
    _id: 5f60647c28b90939d0e5fb24,
    tenantId: '5e6f7c86e7158b42bf500371',
    username: 'aaaa',
    email: 'xxxx@yy.com',
    createdAt: 2020-09-15T06:51:40.531Z,
    updatedAt: 2020-09-15T06:51:40.531Z,
    __v: 0
  }
  </code></pre>
  <p>Then we use destructuring.</p>
  <pre class="lang-js prettyprint-override"><code>const { _id, username, ...others } = user;
  console.log(others);
  </code></pre>
  <p>We get a weird thing:</p>
  <pre class="lang-js prettyprint-override"><code>[
    [
      '$__',
      InternalCache {
        strictMode: false,
        selected: [Object],
        shardval: undefined,
        saveError: undefined,
        validationError: undefined,
        adhocPaths: undefined,
        removing: undefined,
        inserting: undefined,
        saving: undefined,
        version: undefined,
        getters: {},
        _id: 5f60647c28b90939d0e5fb24,
        populate: undefined,
        populated: undefined,
        wasPopulated: false,
        scope: undefined,
        activePaths: [StateMachine],
        pathsToScopes: {},
        cachedRequired: {},
        session: undefined,
        '$setCalled': Set(0) {},
        ownerDocument: undefined,
        fullPath: undefined,
        emitter: [EventEmitter],
        '$options': [Object]
      }
    ],
    [ 'isNew', false ],
    [ 'errors', undefined ],
    [ '$locals', {} ],
    [ '$op', null ],
    [
      '_doc',
      {
        _id: 5f60647c28b90939d0e5fb24,
        tenantId: '5e6f7c86e7158b42bf500371',
        username: 'aaaa',
        email: 'xxxx@yyy.com',
        createdAt: 2020-09-15T06:51:40.531Z,
        updatedAt: 2020-09-15T06:51:40.531Z,
        __v: 0
      }
    ],
    [ '$init', true ]
  ]
  </code></pre>
  <p>What's going on here? And how to make destructuring work again? There is the same error on <code>Object.entries(others)</code>.
  There is one workaround, I can stringify it and then parse it back. But this is obviously redundant.</p>