title: Mongoose doesn't validate nested array schema
body: <p>I have the following schema:</p>
  <pre><code>const SectionSchema = new Schema({
      title: {
          type: String,
          required: true,
          maxlength: 24
      },
      message: {
          type: String,
          required: true,
          minlength: 64,
          maxlength: 1024
      },
      state: {
          type: String,
          validate: v =&gt; {
              console.log(&quot;&gt; section validation test&quot;);
              return false;
          }
      }
  }, {_id: false});
  
  const InstructionSchema = new Schema({
      name: {
          type: String,
          required: true
      },
      columns: [[SectionSchema]]
  });
  </code></pre>
  <p>For the sake of reordering and simplicity I keep sections in a nested array of columns.
  My problem is that no validation of <code>SectionSchema</code> is being performed, when I save changes:</p>
  <pre><code>// Create
  const doc = new Instruction();
  doc.name = &quot;Test&quot;;
  await doc.save(); // Save ok
  
  // Later
  const doc = await Instruction.findOne({name: &quot;Test&quot;});
  doc.columns = [
      [
          {title: &quot;Section1&quot;, message: &quot;This is section one in column one.&quot;, state: &quot;something&quot;},
          {title: &quot;Section2&quot;, message: &quot;This is section two in column one.&quot;, state: &quot;something&quot;},
      ],
      [
          {title: &quot;Section1&quot;, message: &quot;This is section one in column two.&quot;},
          {title: &quot;Section2&quot;},
      ]
  ];
  
  await doc.save(); // Save ok (doesn't validate?)
  
  doc.columns[0][0].message = &quot;&quot;; // Should fail validation
  
  await doc.save(); // Success...
  </code></pre>
  <p>When setting columns the save is successful, that means no validation is being made, including builtin and custom validation for each <code>SectionSchema</code> in the column array.</p>
  <p>If my assumptions are correct, this is because for mongoose the <code>columns</code> field is a mixed type. Mongoose docs doesn't even cover the topic of mixed types validation.</p>
  <p>I have tried marking the paths as modified, but that doesn't make any difference:
  <code>doc.markModified('columns.0.0.state');</code></p>
  <p>What is the solution to <code>SectionSchema</code> validating correctly in this case?</p>