Skip to main content

๐Ÿ“‹ Listing Documents

Need to fetch data fast? The Query manager gives you a toolbox of ways to list, filter, and analyze your documentsโ€”no models required! ๐Ÿงฐโœจ

๐Ÿ—‚๏ธ List All Documentsโ€‹

src/app.ts
import { query } from "@warlock.js/cascade";

const users = await query.list("users");

๐Ÿ” Filter Resultsโ€‹

Pass a filter object as the second argument:

src/app.ts
const activeUsers = await query.list("users", { isActive: true });

๐Ÿฅ‡ Get the First or Last Documentโ€‹

src/app.ts
const firstUser = await query.first("users", { isActive: true });
const lastUser = await query.last("users", { isActive: true });

๐Ÿ•’ Get the Latest Documentsโ€‹

src/app.ts
const latestUsers = await query.latest("users", { isActive: true });
tip

latest returns documents sorted by id in descending order.

๐Ÿท๏ธ Get Distinct Valuesโ€‹

src/app.ts
const emails = await query.distinct("users", "email");
// With filter:
const activeEmails = await query.distinct("users", "email", { isActive: true });

๐Ÿ”ข Count Documentsโ€‹

src/app.ts
const count = await query.count("users");
const activeCount = await query.count("users", { isActive: true });

๐Ÿง  Explain a Queryโ€‹

See how MongoDB will execute your query:

src/app.ts
const plan = await query.explain("users", { isActive: true });
console.log(plan);

๐Ÿงฎ Aggregate Dataโ€‹

Run powerful aggregation pipelines:

src/app.ts
const pipeline = [
{ $match: { isActive: true } },
{ $group: { _id: "$country", count: { $sum: 1 } } },
];
const result = await query.aggregate("users", pipeline);

๐Ÿง™โ€โ™‚๏ธ Pro Tipsโ€‹

  • Use filters for fast, targeted queries
  • Use distinct to get unique values for reporting
  • Use aggregate for advanced analytics and dashboards
  • Use explain to optimize your queries

๐ŸŒŸ What's Next?โ€‹