1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Authors: Robert Lopez
// License: MIT (See `LICENSE.md`)
use Collection;
use ;
/// Represents a model to control a `Collection` of
/// document type `D`.
///
/// Implements methods found in the `core` module, alongside
/// extended versions for ease of use.
///
/// ---
/// Example Usage:
/// ```
/// let collection: Collection<D> = ...;
///
/// let mut model: Model<D> = Model::from(collection);
///
/// // Inserting
/// let mut documents: Vec<D> = vec![...];
///
/// let inserted_oids: Vec<ObjectId> = model.insert_many(documents, None, None).await?;
///
/// // Updating
/// let update_result: UpdateResult = model.update_one_by_oid(
/// &inserted_oids[0],
/// doc! { ... }
/// None,
/// None,
/// ).await?;
///
/// // Iterating over a cursor
/// let mut cursor = model.find_all(None, None).await?;
///
/// while let Some(document: D) = cursor.next().await? {
/// ...
/// }
///
/// // Iterating over a aggregation
/// let mut cursor = model.aggregate(
/// vec![
/// doc! { ... },
/// doc! { ... },
/// doc! { "$addField": ... },
/// ],
/// None,
/// None,
/// ).await?;
///
/// while let Some(generic_document: Document) = cursor.next_generic().await? {
/// ...
/// }
/// ```