MongoDB: Querying Documents

Subject: nodejs

MongoDB: Querying Documents

Querying documents in MongoDB retrieves data from a collection by specifying conditions that the documents must satisfy. This flexible process supports complex searches using various operators.

Why Query Documents?

  • Targeted Retrieval: Fetch only the data you need.
  • Filtering and Analytics: Analyze subsets of your data.
  • Search and Filtering Features: Power dynamic applications.
  • Trend Analysis: Use queries to identify patterns or outliers.

Core Concepts

  • Query Document (Filter): A JavaScript object specifying match conditions. Example: { age: { $gt: 20 } }.
  • Query Operators: Keywords (like $gt, $in) used to create expressive filters.
  • Projection: Specifies which fields to return (e.g., { name: 1, _id: 0 }).

Basic Query Syntax

Common Query Operators

Comparison:

  • $eq, $ne: Equal, Not equal
  • $gt, $gte: Greater than / equal
  • $lt, $lte: Less than / equal
  • $in, $nin: Matches values in / not in an array

Logical:

  • $and, $or, $not, $nor: Combine multiple conditions

Element:

  • $exists: Field presence
  • $type: Match by BSON type

Evaluation:

  • $regex: Regular expression pattern matching
  • $where: JavaScript-based conditions (less performant)

Array:

  • $all: Matches arrays with all specified values
  • $size: Match array length
  • $elemMatch: Match documents based on array elements

Text Search:

  • $text: Full-text search (requires index)

Geo:

  • $near, $geoWithin: Spatial queries (not covered in detail here)

Node.js Examples: Advanced Queries

Prerequisites: MongoDB running, Node.js installed, npm install mongodb

Assume a users collection contains:


1. Using $gt, $lte, $and (age range & status)

Expected Output:


2. Using $all and $or

Expected Output:


3. Using $exists and $regex

Expected Output:


Key Takeaways

  • MongoDB's query syntax supports expressive and powerful filtering.
  • Operators like $gt, $and, $all, and $regex allow for nuanced searches.
  • Projection optimizes output by limiting returned fields.
  • Queries are executed through .find() or .findOne() using structured filters and projection documents.
Next : Sorting Documents