Replace Documents
Overview
In this guide, you can learn how to use the Go driver to perform a replace operation on a document in a MongoDB collection. A replace operation performs differently than an update operation. An update operation modifies only the specified fields in a target document. A replace operation removes all fields in the target document and replaces them with new ones.
Parameters
ReplaceOne()
expects a replacement document, which is the document
that you want to take the place of an existing document. Replacement
documents use the following format:
bson.D{{"<field>", "<value>"}, {"<field>", "<value>"}, ... }
Return Values
ReplaceOne()
returns an UpdateResult
type that
contains information about the replace operation if the operation is
successful. The UpdateResult
type contains the following properties:
Property | Description |
---|---|
| The number of documents matched by the filter |
| The number of documents modified by the operation |
| The number of documents upserted by the operation |
| The |
If multiple documents match the query filter passed to ReplaceOne()
,
the method selects and replaces the first matched document. Your replace
operation fails if no documents match the query filter.
Example
The following document describes a kitchen item:
{ "_id" : 2056, "item" : "Mug", "brand" : "Simply Ceramics", "price" : 2.99, "material" : "Glass" }
The following example uses the ReplaceOne()
method to substitute
this document with one that contains an item
field with a
value of "Cup" and a quantity
field with a value of 107:
filter := bson.D{{"_id", 2056}} replacement := bson.D{{"item", "Cup"}, {"quantity", 107}} result, err := collection.ReplaceOne(context.TODO(), filter, replacement) fmt.Printf("Documents matched: %v\n", result.MatchedCount) fmt.Printf("Documents replaced: %v\n", result.ModifiedCount)
Documents matched: 1 Documents replaced: 1
The replaced document contains the contents of the replacement document
and the immutable _id
field as follows:
{ "_id" : 2056, "item" : "Cup", "quantity" : 107 }
API Documentation
To learn more about any of the methods or types discussed in this guide, see the following API Documentation: