Package com.mongodb

Class WriteConcern

java.lang.Object
com.mongodb.WriteConcern
All Implemented Interfaces:
Serializable

@Immutable public class WriteConcern extends Object implements Serializable

Controls the acknowledgment of write operations with various options.

w

  • 0: Don't wait for acknowledgement from the server
  • 1: Wait for acknowledgement, but don't wait for secondaries to replicate
  • >=2: Wait for one or more secondaries to also acknowledge
  • "majority": Wait for a majority of data bearing nodes to acknowledge
  • "<tag set name>": Wait for one or more secondaries to also acknowledge based on a tag set name

wtimeout - how long to wait for secondaries to acknowledge before failing

  • 0: indefinite
  • >0: time to wait in milliseconds

Other options:

  • journal: If true block until write operations have been committed to the journal. Cannot be used in combination with fsync. Write operations will fail with an exception if this option is used when the server is running without journaling.
See Also:
MongoDB documentation
Write Concern
Write Concern Reference
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final WriteConcern
    Write operations that use this write concern will wait for acknowledgement, using the default write concern configured on the server.
    static final WriteConcern
    Write operations wait for the server to group commit to the journal file on disk.
    static final WriteConcern
    Exceptions are raised for network issues, and server errors; waits on a majority of servers for the write operation.
    static final WriteConcern
    Write operations that use this write concern will return as soon as the message is written to the socket.
    static final WriteConcern
    Write operations that use this write concern will wait for acknowledgement from a single member.
    static final WriteConcern
    Write operations that use this write concern will wait for acknowledgement from two members.
    static final WriteConcern
    Write operations that use this write concern will wait for acknowledgement from three members.
  • Constructor Summary

    Constructors
    Constructor
    Description
    WriteConcern(int w)
    Construct an instance with the given integer-based value for w.
    WriteConcern(int w, int wTimeoutMS)
    Constructs an instance with the given integer-based value for w and the given value for wTimeoutMS.
    Construct an instance with the given tag set-based value for w.
  • Method Summary

    Modifier and Type
    Method
    Description
    Gets this write concern as a document.
    boolean
     
    Gets the journal property.
    int
    Gets the w value as an integer.
    Gets the w value.
    Gets the w parameter as a String.
    Gets the wTimeout in the given time unit.
    int
     
    boolean
    Returns true if this write concern indicates that write operations must be acknowledged.
    boolean
    Gets whether this write concern indicates that the server's default write concern will be used.
     
    Gets the WriteConcern constants by name (matching is done case insensitively).
    Constructs a new WriteConcern from the current one and the specified journal value
    withW(int w)
    Constructs a new WriteConcern from the current one and the specified integer-based value for w
    Constructs a new WriteConcern from the current one and the specified tag-set based value for w
    withWTimeout(long wTimeout, TimeUnit timeUnit)
    Constructs a new WriteConcern from the current one and the specified wTimeout in the given time unit.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • ACKNOWLEDGED

      public static final WriteConcern ACKNOWLEDGED
      Write operations that use this write concern will wait for acknowledgement, using the default write concern configured on the server.
      Since:
      2.10.0
      MongoDB documentation
      Acknowledged
    • W1

      public static final WriteConcern W1
      Write operations that use this write concern will wait for acknowledgement from a single member.
      Since:
      3.2
      MongoDB documentation
      w option
    • W2

      public static final WriteConcern W2
      Write operations that use this write concern will wait for acknowledgement from two members.
      Since:
      3.2
      MongoDB documentation
      w option
    • W3

      public static final WriteConcern W3
      Write operations that use this write concern will wait for acknowledgement from three members.
      Since:
      3.2
      MongoDB documentation
      w option
    • UNACKNOWLEDGED

      public static final WriteConcern UNACKNOWLEDGED
      Write operations that use this write concern will return as soon as the message is written to the socket. Exceptions are raised for network issues, but not server errors.
      Since:
      2.10.0
      MongoDB documentation
      Unacknowledged
    • JOURNALED

      public static final WriteConcern JOURNALED
      Write operations wait for the server to group commit to the journal file on disk.
      MongoDB documentation
      Journaled
    • MAJORITY

      public static final WriteConcern MAJORITY
      Exceptions are raised for network issues, and server errors; waits on a majority of servers for the write operation.
  • Constructor Details

    • WriteConcern

      public WriteConcern(int w)
      Construct an instance with the given integer-based value for w.
      Parameters:
      w - number of servers to ensure write propagation to before acknowledgment, which must be >= 0
      MongoDB documentation
      w option
    • WriteConcern

      public WriteConcern(String w)
      Construct an instance with the given tag set-based value for w.
      Parameters:
      w - tag set name, or "majority", representing the servers to ensure write propagation to before acknowledgment. Do not use string representation of integer values for w
      MongoDB documentation
      Tag Sets
      w option
    • WriteConcern

      public WriteConcern(int w, int wTimeoutMS)
      Constructs an instance with the given integer-based value for w and the given value for wTimeoutMS.
      Parameters:
      w - the w value, which must be >= 0
      wTimeoutMS - the wTimeout in milliseconds, which must be >= 0
      MongoDB documentation
      w option
      wtimeout option
  • Method Details

    • getWObject

      @Nullable public Object getWObject()
      Gets the w value.
      Returns:
      w, either an instance of Integer or String or null
    • getW

      public int getW()
      Gets the w value as an integer.
      Returns:
      w as an int
      Throws:
      IllegalStateException - if w is null or not an integer
    • getWString

      public String getWString()
      Gets the w parameter as a String.
      Returns:
      w as a String
      Throws:
      IllegalStateException - if w is null or not a String
    • getWTimeout

      @Nullable public Integer getWTimeout(TimeUnit timeUnit)
      Gets the wTimeout in the given time unit.
      Parameters:
      timeUnit - the non-null time unit for the result
      Returns:
      the WTimeout, which may be null if a wTimeout has not been specified
      Since:
      3.2
      See Also:
      MongoDB documentation
      wTimeout
    • getJournal

      @Nullable public Boolean getJournal()
      Gets the journal property. The default value is null.
      Returns:
      whether journal syncing is enabled, or null if unspecified.
      Since:
      3.2
      MongoDB documentation
      Journaled
    • isServerDefault

      public boolean isServerDefault()
      Gets whether this write concern indicates that the server's default write concern will be used.
      Returns:
      true if this write concern indicates that the server's default write concern will be used
      MongoDB documentation
      getLastErrorDefaults
    • asDocument

      public BsonDocument asDocument()
      Gets this write concern as a document.
      Returns:
      The write concern as a BsonDocument, even if w &lt;= 0
    • isAcknowledged

      public boolean isAcknowledged()
      Returns true if this write concern indicates that write operations must be acknowledged.
      Returns:
      true w != null or w > 0 or journal is true or fsync is true
      MongoDB documentation
      Acknowledged
    • valueOf

      public static WriteConcern valueOf(String name)
      Gets the WriteConcern constants by name (matching is done case insensitively).
      Parameters:
      name - the name of the WriteConcern
      Returns:
      the WriteConcern instance
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • withW

      public WriteConcern withW(int w)
      Constructs a new WriteConcern from the current one and the specified integer-based value for w
      Parameters:
      w - number of servers to ensure write propagation to before acknowledgment, which must be >= 0
      Returns:
      the new WriteConcern
      MongoDB documentation
      Replica Acknowledged
    • withW

      public WriteConcern withW(String w)
      Constructs a new WriteConcern from the current one and the specified tag-set based value for w
      Parameters:
      w - tag set, or "majority", representing the servers to ensure write propagation to before acknowledgment. Do not use string representation of integer values for w
      Returns:
      the new WriteConcern
      See Also:
      MongoDB documentation
      Tag Sets
    • withJournal

      public WriteConcern withJournal(@Nullable Boolean journal)
      Constructs a new WriteConcern from the current one and the specified journal value
      Parameters:
      journal - true if journalling is required for acknowledgement, false if not, or null if unspecified
      Returns:
      the new WriteConcern
      Since:
      3.2
      MongoDB documentation
      j option
    • withWTimeout

      public WriteConcern withWTimeout(long wTimeout, TimeUnit timeUnit)
      Constructs a new WriteConcern from the current one and the specified wTimeout in the given time unit.
      Parameters:
      wTimeout - the wTimeout, which must be >= 0 and <= Integer.MAX_VALUE after conversion to milliseconds
      timeUnit - the non-null time unit to apply to wTimeout
      Returns:
      the WriteConcern with the given wTimeout
      Since:
      3.2
      See Also:
      MongoDB documentation
      wtimeout option