Returns the error status of the preceding operation on the current connection. Clients typically use getLastError in combination with write operations to ensure that the write succeeds.
Field | Type | Description |
---|---|---|
j | Boolean | If true, wait for the next journal commit before returning, rather than waiting for a full disk flush. If mongod does not have journaling enabled, this option has no effect. If this option is enabled for a write operation, mongod will wait no more than 1/3 of the current journalCommitInterval before writing data to the journal. |
w | integer or string | When running with replication, this is the number of servers to replicate to before returning. A w value of 1 indicates the primary only. A w value of 2 includes the primary and at least one secondary, etc. In place of a number, you may also set w to majority to indicate that the command should wait until the latest write propagates to a majority of replica set members. If using w, you should also use wtimeout. Specifying a value for w without also providing a wtimeout may cause getLastError to block indefinitely. |
fsync | Boolean | If true, wait for mongod to write this data to disk before returning. Defaults to false. In most cases, use the j option to ensure durability and consistency of the data set. |
wtimeout | integer | Optional. Milliseconds. Specify a value in milliseconds to control how long to wait for write propagation to complete. If replication does not complete in the given timeframe, the getLastError command will return with an error status. |
The following is the prototype form:
{ getLastError: 1 }
See also
Write Concern, Write Concern Reference, and Replica Acknowledged.
Each getLastError() command returns a document containing a subset of the fields listed below.
getLastError.ok is true when the getLastError command completes successfully.
Note
A value of true does not indicate that the preceding operation did not produce an error.
getLastError.err is null unless an error occurs. When there was an error with the proceeding operation, err contains a textual description of the error.
getLastError.code reports the preceding operation’s error code.
The identifier of the connection.
When issued against a replica set member and the preceding operation was a write or update, getLastError.lastOp is the optime timestamp in the oplog of the change.
getLastErrr.n reports the number of documents updated or removed, if the preceding operation was an update or remove operation.
getLastError.updateExisting is true when an update affects at least one document and does not result in an upsert.
getLastError.upserted is an ObjectId that corresponds to the upserted document if the update resulted in an insert.
If set, wnote indicates that the preceding operation’s error relates to using the w parameter to getLastError.
See
Write Concern Reference for more information about w values.
getLastError.wtimeout is true if the getLastError timed out because of the wtimeout setting to getLastError.
If the preceding operation specified a timeout using the wtimeout setting to getLastError, then getLastError.waited reports the number of milliseconds getLastError waited before timing out.
getLastError.wtime is the number of milliseconds spent waiting for the preceding operation to complete. If getLastError timed out, getLastError.wtime and getLastError.waited are equal.
The following example ensures the operation has replicated to two members (the primary and one other member):
db.runCommand( { getLastError: 1, w: 2 } )
The following example ensures the write operation has replicated to a majority of the configured members of the set.
db.runCommand( { getLastError: 1, w: "majority" } )
Unless you specify a timeout, a getLastError command may block forever if MongoDB cannot satisfy the requested write concern. To specify a timeout of 5000 milliseconds, use an invocation that resembles the following:
db.runCommand( { getLastError: 1, w: 2, wtimeout:5000 } )
When wtimeout is 0, the getLastError operation will never time out.