Skip to main content

Mongo - Intermediate Mongo

Lesson Objectives#

  1. Use intermediate find operators
  2. Explain update operators
  3. Explain upserts
  4. Explain multiple updates

Use intermediate find operators#

To find all the documents in our collection that have a weight property greater than 700, we run:

db.employees.find({  weight: {    $gt: 700,  },});

There are several comparisons we can perform

  • $lt (less than)
  • $lte (less than or equal to)
  • $gt (greater than)
  • $gte (greater than or equal to)
  • $ne (not equal to)
  • $exists (does the property exist on an object -- either true or false)
  • $in (does the value exist within the given array)

If the field is an array, you can search for a match within that array

db.employees.find({  loves: "energon",});

If the object you pass into find() has more than one attribute, it will return documents that match both criteria. This is called an AND statement (like &&)

db.employees.find({  gender: "m",  weight: {    $gt: 700,  },});

To find all documents that match at least one of a set of criteria, use an OR statement (like ||)

db.employees.find({  $or: [    {      loves: "apple",    },    {      weight: {        $lt: 500,      },    },  ],});

To find documents that have a value that matches multiple criteria, pass an object that contains both tests. This is similar to an AND (&&), but for one property. If you try to do a normal AND statement, but use the same property, twice it won't work.

db.employees.find({  salary: {    $gte: 80,    $lte: 165,  },});

Explain intermediate update operators#

We can increase a specific value

db.employees.update(  {    name: "Pilot",  },  {    $inc: {      salary: -2,    },  });

Multiple a value

db.employees.update(  {    name: "Pilot",  },  {    $mul: {      salary: 1 / 2,    },  });

Push a value onto an array

db.employees.update(  {    name: "Aurora",  },  {    $push: {      loves: "sugar",    },  });

Pop a value off an array

db.employees.update(  {    name: "Aurora",  },  {    $pop: {      loves: 1,    },  });

Remove a property altogether

db.employees.update(  {    name: "Aurora",  },  {    $unset: {      loves: "",    },  });

Rename a field

db.employees.update(  {    name: "Aurora",  },  {    $rename: {      wrong_field_name: "correct_field_name",    },  });

For more operators, look here: http://docs.mongodb.org/manual/reference/operator/update/#update-operators

Explain upserts#

Upserts will insert a value if it doesn't exist. If it does, it will update it.

Normal:

db.hits.update(  {    page: "employees",  },  {    $inc: {      hits: 1,    },  });db.hits.find();

Upsert:

db.hits.update(  {    page: "employees",  },  {    $inc: {      hits: 1,    },  },  {    upsert: true,  });db.hits.find();db.hits.update(  {    page: "employees",  },  {    $inc: {      hits: 1,    },  },  {    upsert: true,  });db.hits.find();