Skip to main content

findUnique

Find a single document by any field. Returns the latest version by timestamp.
const user = await client.findUnique('users', {
  email: 'alice@example.com'
});

if (user) {
  console.log('Found user:', user.name);
} else {
  console.log('User not found');
}

Parameters

ParameterTypeDescription
collectionstringCollection name
whereobjectFilter criteria

Return Value

Returns T | null - the document if found, or null if not found.

findMany

Find multiple documents with filters and options.
const activeUsers = await client.findMany(
  'users',
  { active: true },
  {
    limit: 10,
    sort: { field: 'createdAt', order: 'desc' }
  }
);

console.log(`Found ${activeUsers.length} active users`);

FindManyOptions

ParameterTypeDescription
limitnumberMaximum results to return
offsetnumberNumber of results to skip
sortobjectSorting configuration

countDocuments

Count documents matching a filter.
const count = await client.countDocuments('users', { active: true });
console.log(`Active users: ${count}`);

Query Builder Alternative

For more complex queries, use the Query Builder:
const users = await client.queryBuilder()
  .collection('users')
  .whereField('active').isTrue()
  .whereField('createdAt').dateThisMonth()
  .selectFields(['id', 'name', 'email'])
  .orderBy('createdAt', 'desc')
  .limit(50)
  .execute();

Examples

Find by ID

const user = await client.findUnique('users', { id: 'user_123' });

Find with Pagination

// Page 1
const page1 = await client.findMany('posts', {}, {
  limit: 10,
  offset: 0,
  sort: { field: 'createdAt', order: 'desc' }
});

// Page 2
const page2 = await client.findMany('posts', {}, {
  limit: 10,
  offset: 10,
  sort: { field: 'createdAt', order: 'desc' }
});

Using executeUnique with Query Builder

For complex unique queries:
const user = await client.queryBuilder()
  .collection('users')
  .whereField('email').equals('alice@example.com')
  .executeUnique<User>();
// Returns: User | null (latest version by timestamp)

Next Steps