forked from mongodb/mongo-csharp-driver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFindOneAndReplaceOptions.cs
149 lines (135 loc) · 4.47 KB
/
FindOneAndReplaceOptions.cs
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/* Copyright 2010-present MongoDB Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using MongoDB.Bson;
using MongoDB.Driver.Core.Misc;
namespace MongoDB.Driver
{
/// <summary>
/// Options for a findAndModify command to replace an object.
/// </summary>
/// <typeparam name="TDocument">The type of the document.</typeparam>
/// <typeparam name="TProjection">The type of the projection (same as TDocument if there is no projection).</typeparam>
public class FindOneAndReplaceOptions<TDocument, TProjection>
{
// fields
private bool? _bypassDocumentValidation;
private Collation _collation;
private BsonValue _comment;
private BsonValue _hint;
private bool _isUpsert;
private BsonDocument _let;
private TimeSpan? _maxTime;
private ProjectionDefinition<TDocument, TProjection> _projection;
private ReturnDocument _returnDocument;
private SortDefinition<TDocument> _sort;
// constructors
/// <summary>
/// Initializes a new instance of the <see cref="FindOneAndReplaceOptions{TDocument, TProjection}"/> class.
/// </summary>
public FindOneAndReplaceOptions()
{
_returnDocument = ReturnDocument.Before;
}
// properties
/// <summary>
/// Gets or sets a value indicating whether to bypass document validation.
/// </summary>
public bool? BypassDocumentValidation
{
get { return _bypassDocumentValidation; }
set { _bypassDocumentValidation = value; }
}
/// <summary>
/// Gets or sets the collation.
/// </summary>
public Collation Collation
{
get { return _collation; }
set { _collation = value; }
}
/// <summary>
/// Gets or sets the comment.
/// </summary>
public BsonValue Comment
{
get { return _comment; }
set { _comment = value; }
}
/// <summary>
/// Gets or sets the hint.
/// </summary>
public BsonValue Hint
{
get { return _hint; }
set { _hint = value; }
}
/// <summary>
/// Gets or sets the let document.
/// </summary>
public BsonDocument Let
{
get { return _let; }
set { _let = value; }
}
/// <summary>
/// Gets or sets a value indicating whether to insert the document if it doesn't already exist.
/// </summary>
public bool IsUpsert
{
get { return _isUpsert; }
set { _isUpsert = value; }
}
/// <summary>
/// Gets or sets the maximum time.
/// </summary>
public TimeSpan? MaxTime
{
get { return _maxTime; }
set { _maxTime = Ensure.IsNullOrInfiniteOrGreaterThanOrEqualToZero(value, nameof(value)); }
}
/// <summary>
/// Gets or sets the projection.
/// </summary>
public ProjectionDefinition<TDocument, TProjection> Projection
{
get { return _projection; }
set { _projection = value; }
}
/// <summary>
/// Gets or sets which version of the document to return.
/// </summary>
public ReturnDocument ReturnDocument
{
get { return _returnDocument; }
set { _returnDocument = value; }
}
/// <summary>
/// Gets or sets the sort.
/// </summary>
public SortDefinition<TDocument> Sort
{
get { return _sort; }
set { _sort = value; }
}
}
/// <summary>
/// Options for a findAndModify command to replace an object.
/// </summary>
/// <typeparam name="TDocument">The type of the document and the result.</typeparam>
public class FindOneAndReplaceOptions<TDocument> : FindOneAndReplaceOptions<TDocument, TDocument>
{
}
}