Indexes: Indexing Compare Exchange Values


  • Compare exchange values can be loaded within an index using the value's key.

  • The index will update when the compare exchange value is updated, as well as when documents are modified in the indexed collection(s).

  • In this page:


How to use

When creating an index using AbstractIndexCreationTask, use javaScript to load a compare exchange value by its key.


Examples

These indexes map the rooms in a hotel, as well as compare exchange values representing the guests in those rooms.

private class Compare_Exchange_JS_Index extends AbstractJavaScriptIndexCreationTask{
    public Compare_Exchange_JS_Index()
    {
        setMaps(Collections.singleton(
                "map('HotelRooms', function (room) {\n"+
                "   var guests = cmpxchg(room.RoomID);\n"+
                "   return {\n"+
                "       RoomID: room.RoomID,\n"+
                "       Guests: guests\n"+
                "   }\n"+
                "});"
                )
        );
    };
}

Querying the Index

IRawDocumentQuery<Hotelroom> VIPRooms = session.advanced().rawQuery(Hotelroom.class,
    "from Hotelrooms as room\n" +
        "where room.Guests == cmpxchg('VIP')");