Compare Exchange Metadata
-
RavenDB 5.0 added metadata to compare exchange values.
-
In this page:
Syntax
A compare exchange value's metadata is very similar to a document's metadata.
The metadata can be used to set compare exchange expiration.
The metadata is accessible as a root property of the compare exchange value object:
using (IAsyncDocumentSession session = store.OpenAsyncSession(
new SessionOptions {
TransactionMode = TransactionMode.ClusterWide
}))
{
// Create a new compare exchange value
var cmpxchgValue = session.Advanced.ClusterTransaction.CreateCompareExchangeValue("key", "value");
// Add a field to the metadata
// with a value of type string
cmpxchgValue.Metadata["Field name"] = "some value";
// Retrieve metadata as a dictionary
IDictionary<string, object> cmpxchgMetadata = cmpxchgValue.Metadata;
}
You can send it as a parameter of the Put Compare Exchange Value operation:
// Create some metadata
var cmpxchgMetadata = new MetadataAsDictionary {
["Year"] = "2020"
};
// Create/update the compare exchange value "best"
await documentStore.Operations.SendAsync(
new PutCompareExchangeValueOperation<User>(
"best",
new User { Name = "Alice" },
0,
cmpxchgMetadata));