Create or Modify Counters


  • Use the countersFor.increment method to create a new Counter or modify an existing Counter's value.

  • If the Counter exists, increment will add the specified number to the Counter's current value.
    If the Counter doesn't exist, increment will create it and set its initial value.

  • For all other countersFor methods see this Overview.

  • In this page:


increment usage

Flow:

  • Open a session.
  • Create an instance of countersFor.
    • Either pass countersFor an explicit document ID, -or-
    • Pass it an entity tracked by the session, e.g. a document object returned from session.query or from session.load.
  • Call countersFor.increment.
  • Call session.saveChanges for the changes to take effect.

Note:

  • Modifying a Counter using increment only takes effect when session.saveChanges() is executed.
  • To decrease a Counter's value, pass the method a negative number to the increment method.

Example

// 1. Open a session
try (IDocumentSession session = docStore.openSession()) {
    // 2. pass CountersFor's constructor a document ID
    ISessionDocumentCounters documentCounters = session.countersFor("products/1-C");

    // 3. Use `countersFor.increment`
    documentCounters.increment("productLikes");  // Increase "productLikes" by 1, or create it with a value of 1
    documentCounters.increment("productDislikes", 1); // Increase "productDislikes" by 1, or create it with a value of 1
    documentCounters.increment("productPageViews", 15); // Increase "productPageViews" by 15, or create it with a value of 15
    documentCounters.increment("daysLeftForSale", -10); // Decrease "daysLeftForSale" by 10, or create it with a value of -10

    // 4. Save changes to the session
    session.saveChanges();
}

Syntax

void increment(String counterName);
void increment(String counterName, long incrementValue);
Parameter Type Description
counterName String Counter's name
incrementValue Long Increase Counter by this value.
Default value is 1.
For a new Counter, this number will be its initial value.