Skip to content

Commit 2517c7e

Browse files
authored
DOCSP-30516: replace usage example (#73)
1 parent a981d27 commit 2517c7e

File tree

4 files changed

+145
-4
lines changed

4 files changed

+145
-4
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use std::env;
2+
use mongodb::{ bson::doc, Client, Collection };
3+
use serde::{ Deserialize, Serialize };
4+
5+
#[derive(Serialize, Deserialize, Debug)]
6+
struct Restaurant {
7+
borough: String,
8+
cuisine: String,
9+
name: String,
10+
}
11+
12+
#[tokio::main]
13+
async fn main() -> mongodb::error::Result<()> {
14+
let uri = "<connection string>";
15+
16+
let client = Client::with_uri_str(uri).await?;
17+
let my_coll: Collection<Restaurant> = client
18+
.database("sample_restaurants")
19+
.collection("restaurants");
20+
21+
let filter = doc! { "name": "Landmark Coffee Shop" };
22+
let replacement = Restaurant {
23+
borough: "Brooklyn".to_string(),
24+
cuisine: "Café/Coffee/Tea".to_string(),
25+
name: "Harvest Moon Café".to_string(),
26+
};
27+
28+
let res = my_coll.replace_one(filter, replacement, None).await?;
29+
println!(
30+
"Matched documents: {}\nReplaced documents: {}",
31+
res.matched_count,
32+
res.modified_count
33+
);
34+
35+
Ok(())
36+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
use std::env;
2+
use mongodb::{ bson::doc, sync::{ Client, Collection } };
3+
use serde::{ Deserialize, Serialize };
4+
5+
#[derive(Serialize, Deserialize, Debug)]
6+
struct Restaurant {
7+
borough: String,
8+
cuisine: String,
9+
name: String,
10+
}
11+
12+
fn main() -> mongodb::error::Result<()> {
13+
let uri = "<connection string>";
14+
15+
let client = Client::with_uri_str(uri)?;
16+
let my_coll: Collection<Restaurant> = client
17+
.database("sample_restaurants")
18+
.collection("restaurants");
19+
20+
let filter = doc! { "name": "Landmark Coffee Shop" };
21+
let replacement = Restaurant {
22+
borough: "Brooklyn".to_string(),
23+
cuisine: "Café/Coffee/Tea".to_string(),
24+
name: "Harvest Moon Café".to_string(),
25+
};
26+
27+
let res = my_coll.replace_one(filter, replacement, None)?;
28+
println!(
29+
"Matched documents: {}\nReplaced documents: {}",
30+
res.matched_count,
31+
res.modified_count
32+
);
33+
34+
Ok(())
35+
}

source/usage-examples.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Usage Examples
1313
.. toctree::
1414

1515
/usage-examples/find
16+
/usage-examples/replace
1617
/usage-examples/deleteMany
1718
/usage-examples/count
1819

@@ -89,6 +90,7 @@ Available Usage Examples
8990
------------------------
9091

9192
- :ref:`Find Multiple Documents <rust-find-usage>`
93+
- :ref:`Replace a Document <rust-replace-usage>`
9294
- :ref:`Delete Multiple Documents <rust-delete-many-usage>`
9395
- :ref:`Count Documents <rust-count-usage>`
9496

@@ -98,8 +100,5 @@ Available Usage Examples
98100
- :ref:`Insert Multiple Documents <rust-insert-many-usage>`
99101
- :ref:`Update a Document <rust-update-one-usage>`
100102
- :ref:`Update Multiple Documents <rust-update-many-usage>`
101-
- :ref:`Replace a Document <rust-replace-usage>`
102103
- :ref:`Delete a Document <rust-delete-one-usage>`
103-
- :ref:`Find Distinct Values <rust-distinct-usage>`
104-
105-
104+
- :ref:`Find Distinct Values <rust-distinct-usage>`

source/usage-examples/replace.txt

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
.. _rust-replace-usage:
2+
3+
==================
4+
Replace a Document
5+
==================
6+
7+
You can replace a document in a collection by calling the `replace_one()
8+
<{+api+}/struct.Collection.html#method.replace_one>`__ method on a
9+
``Collection`` instance.
10+
11+
Pass the following parameters to the ``replace_one()`` method to update
12+
a document:
13+
14+
- Query filter, which specifies the criteria to match
15+
- Replacement document, which contains the fields and values that will
16+
replace an existing document
17+
18+
The ``replace_one()`` method returns an `UpdateResult
19+
<{+api+}/results/struct.UpdateResult.html>`__ type which contains
20+
information about the result of the replace operation, such as the
21+
number of modified documents.
22+
23+
To learn more about the ``replace_one()`` method, see the
24+
:ref:`rust-replace-document` section of the Modify Documents guide.
25+
26+
Example
27+
-------
28+
29+
This example replaces a document in the ``restaurants`` collection of
30+
the ``sample_restaurants`` database. The example uses a ``Restaurant``
31+
struct that has ``name``, ``borough``, and ``cuisine`` fields to model
32+
documents in the collection.
33+
34+
The following code replaces a document in which the value of the
35+
``name`` field is ``"Landmark Coffee Shop"`` with a new document:
36+
37+
.. tabs::
38+
39+
.. tab:: Asynchronous
40+
:tabid: find-async
41+
42+
.. io-code-block::
43+
:copyable: true
44+
45+
.. input:: /includes/usage-examples/code-snippets/replace-async.rs
46+
:language: rust
47+
:dedent:
48+
49+
.. output::
50+
:language: console
51+
:visible: false
52+
53+
Matched documents: 1
54+
Replaced documents: 1
55+
56+
.. tab:: Synchronous
57+
:tabid: find-sync
58+
59+
.. io-code-block::
60+
:copyable: true
61+
62+
.. input:: /includes/usage-examples/code-snippets/replace-sync.rs
63+
:language: rust
64+
:dedent:
65+
66+
.. output::
67+
:language: console
68+
:visible: false
69+
70+
Matched documents: 1
71+
Replaced documents: 1

0 commit comments

Comments
 (0)