title: Mongoose: 'Cast to embedded failed for value at path. Cannot use 'in' operator to search for '_id'
body: <p>I'm having some trouble trying to save an array inside an array of objects.</p>
  
  <p>I'm getting the following response from the server:</p>
  
  <pre><code>{ [CastError: Cast to embedded failed for value "\'maxbeds: 4\'" at  path "saved_searches"]
  message: 'Cast to embedded failed for value "\\\'maxbeds: 4\\\'" at path "saved_searches"',
  name: 'CastError',
  kind: 'embedded',
  value: '\'maxbeds: 4\'',
  path: 'saved_searches',
  reason: [TypeError: Cannot use 'in' operator to search for '_id' in maxbeds: 4] }
  </code></pre>
  
  <p>Here's my Schema:</p>
  
  <pre><code>var mongoose = require('mongoose'),
  rfr = require('rfr'),
  passwordHelper = rfr('server/helpers/password.js'),
  Schema = mongoose.Schema,
  _ = require('lodash');
  
  /*
  * 
  * Creating UserSchema for MongoDB
  *
  */
  
  var UserSchema = new Schema({
   email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true,
    select: false
  },
  name: {
    type: String,
    required: true
  },
  passwordSalt: {
    type: String,
    required: true,
    select: false
  },
  saved_houses: [{
    mlsId: {
      type: String
    },
    addressFull: {
      type: String
    },
    bedrooms: {
      type: Number
    },
    listPrice: {
      type: Number
    },
    bathrooms: {
      type: Number
    },
    sqft: {
      type: Number
    },
    createdAt: {
      type: Date,
      default: Date.now
    }
  }],
  saved_searches: [{
    search_name: {
      type: String
    },
    filters: {
      type: [Schema.Types.Mixed]
    },
    createdAt: {
      type: Date,
      default: Date.now
    }
  }],
  active: {
    type: Boolean,
    default: true
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
  });
  // compile User model
  module.exports = mongoose.model('User', UserSchema);
  </code></pre>
  
  <p>The problem, I believe is the filters array that live inside an object inside the saved_searches array</p>
  
  <p>Now, in my router I do the following: </p>
  
  <pre><code>var express = require('express'),
  savedDataRouter = express.Router(),
  mongoose = require('mongoose'),
  rfr = require('rfr'),
  s = rfr('server/routes/config/jwt_config.js'),
  User = rfr('server/models/User.js'),
  jwt = require('jsonwebtoken');
  
  savedDataRouter.post('/searches', function (req, res) {
    if (mongoose.Types.ObjectId.isValid(req.body.userId)) {
        User.findByIdAndUpdate({
                _id: req.body.userId
            }, {
                $push: {
                    saved_searches: {
                        search_name: req.body.search_name,
                        $each: req.body.filters
                    }
                },
            }, {
                new: true
            },
            function (err, doc) {
                if (err || !doc) {
                    console.log(err);
                    res.json({
                        status: 400,
                        message: "Unable to save search." + err
  
                    });
                } else {
                    return res.json(doc);
                }
            });
    } else {
        return res.status(404).json({
            message: "Unable to find user"
        });
    }
  });
  </code></pre>
  
  <p>If I log the request body coming from the client I get the following: </p>
  
  <pre><code>//console.log(req.body)
  { search_name: 'Sarasota',
  filters: [ 'minbaths: 1', 'maxbaths: 3', 'minbeds: 2', 'maxbeds: 4' ],
  userId: '583359409a1e0167d1a3a2b3' }
  </code></pre>
  
  <p>I've tried all the things I've seen in Stack Overflow and other online resources with no luck. What am I doing wrong?</p>
  
  <h2>Edit</h2>
  
  <p>Added module dependencies to my UserSchema and SavedDataRouter</p>