title: Jest toMatchObject with MongoDB confusing
body: <p>I have a test on my mongoose model and while one models' tests are running completly fine, another one which is basically a copy - does not work. And honestly I don't understand the problem. I tried to remove some of the properties or add hardcoded values to really match 100% exactly - but somehow i always get a similar error.</p>
  
  <p>The error. What drives me crazy is that I tried to remove/add the "_id" and the "createdOn" field but at least the "_id" always appear in the error. As said above in another model the test does not complain about the "_id" because I do not validate it there...I just don't get it.</p>
  
  <pre><code>insert › Should save a channel
  
  expect(received).toMatchObject(expected)
  
  - Expected  - 1
  + Received  + 2
  
  @@ -1,8 +1,9 @@
    Object {
  +   "_id": "5e962f1dc133d8b92891ddaf",
      "createdBy": "5e962f1dc133d8b92891ddae",
  -   "createdOn": Anything,
  +   "createdOn": 2020-04-14T21:46:05.907Z,
      "hasAcceptedLegal": false,
      "isActive": true,
      "isPublic": false,
      "members": Array [
        "5e962f1dc133d8b92891ddae",
  
    48 |     expect(spy).toHaveBeenCalled();
    49 | 
  &gt; 50 |     expect(channel).toMatchObject({
       |                     ^
    51 |       name: mockName,
    52 |       createdBy: mockCreatedById,
    53 |       createdOn: expect.anything(),
  
    at Object.it (test/model/channel.model.test.ts:50:21)
  </code></pre>
  
  <p>The respective model</p>
  
  <pre><code>import mongoose, { Schema, Document } from "mongoose";
  import { IUser } from "./user.model";
  
  export interface IChannel extends Document {
    name: string;
    createdBy: IUser["id"];
    createdOn: Date;
    isActive: boolean;
    isPublic: boolean;
    hasAcceptedLegal: boolean;
    members: [IUser["id"]];
  }
  
  const ChannelSchema: Schema = new Schema({
    name: { type: String, required: true },
    createdBy: {
      type: Schema.Types.ObjectId,
      ref: "User",
      required: true,
    },
    createdOn: { type: Date },
    isActive: { type: Boolean, default: true },
    isPublic: { type: Boolean, default: false },
    hasAcceptedLegal: { type: Boolean, default: false },
    members: [
      {
        type: Schema.Types.ObjectId,
        ref: "User",
        required: true,
      },
    ],
  });
  
  export default mongoose.model&lt;IChannel&gt;("Channel", ChannelSchema);
  </code></pre>
  
  <p>The test:</p>
  
  <pre><code>it("Should save a channel", async () =&gt; {
      expect.assertions(2);
      let mockName = Faker.company.companyName();
      let mockCreatedById = Types.ObjectId();
      let mockCreatedOn = Date.now();
  
      const channel: IChannel = new Channel({
        name: mockName,
        createdBy: mockCreatedById,
        createdOn: mockCreatedOn,
        members: [mockCreatedById],
      });
      const spy = jest.spyOn(channel, "save");
      channel.save();
  
      expect(spy).toHaveBeenCalled();
  
      expect(channel).toMatchObject({
        name: mockName,
        createdBy: mockCreatedById,
        createdOn: expect.anything(),
        isActive: true,
        isPublic: false,
        hasAcceptedLegal: false,
        members: [mockCreatedById],
      });
    });
  </code></pre>