更新数组
在此页面上
Overview
在本页中,您可以学习;了解如何为大量字段创建 UpdateDefinition
对象。 UpdateDefinition
对象指定要执行的更新操作类型、要更新的字段以及每个字段的新值(如果适用)。
.NET/ C#驱动程序支持 MongoDB Server手册中描述的大量更新操作符和修饰符。要为这些操作符之一创建 UpdateDefinition
Builders.Update
对象,请从 属性中调用相应的方法。以下部分更详细地描述了这些方法。
创建UpdateDefinition
对象后,将其传递给UpdateMany()
或UpdateManyAsync()
方法。有关这些方法的更多信息,请参阅 更新多个页面。
样本数据
本指南中的示例使用 sample_restaurants
数据库中的 restaurants
集合。此集合中的文档使用以下 Restaurant
、Address
和 GradeEntry
类作为模型:
public class Restaurant { public ObjectId Id { get; set; } public string Name { get; set; } [ ] public string RestaurantId { get; set; } public string Cuisine { get; set; } public Address Address { get; set; } public string Borough { get; set; } public List<GradeEntry> Grades { get; set; } }
public class Address { public string Building { get; set; } [ ] public double[] Coordinates { get; set; } public string Street { get; set; } [ ] public string ZipCode { get; set; } }
public class GradeEntry { public DateTime Date { get; set; } public string Grade { get; set; } public float? Score { get; set; } }
注意
restaurants
集合中的文档使用蛇形命名规则。本指南中的示例使用 ConventionPack
将集合中的字段反序列化为 Pascal 语句,并将它们映射到 Restaurant
类中的属性。
如需了解有关自定义序列化的更多信息,请参阅“自定义序列化”。
此数据集来自 Atlas 提供的示例数据集。请参阅快速入门,以了解如何创建一个免费的 MongoDB 集群并加载这些示例数据。
添加一个值
要在大量末尾添加一个值,请调用 Builders.Update.Push()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要添加值的大量字段。 数据类型: |
| 要添加到大量字段末尾的值。 数据类型: |
以下代码示例使用 Push()
方法将新的 GradeEntry
对象添加到所有匹配文档中的 Grades
大量:
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var update = Builders<Restaurant>.Update .Push(restaurant => restaurant.Grades, new GradeEntry() { Date = DateTime.Now, Grade = "A", Score = 96 }); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var update = Builders<Restaurant>.Update .Push(restaurant => restaurant.Grades, new GradeEntry() { Date = DateTime.Now, Grade = "A", Score = 96 }); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
要将一个值添加到大量的末尾,但前提是该值尚不存在于大量中,请调用 Builders.Update.AddToSet()
方法。 MongoDB Server通过将该值的BSON表示与大量BSON。
AddToSet()
方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要添加值的大量字段。 数据类型: |
| 要添加到大量字段末尾的值。 数据类型: |
以下代码示例调用 AddToSet()
方法,将第一个 GradeEntry
对象重新添加到所有匹配文档中的 Grades
大量。由于该值已存在于大量中,因此更新操作不会执行任何操作。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var firstGradeEntry = _restaurantsCollection.Find(filter).FirstOrDefault().Grades[0]; var update = Builders<Restaurant>.Update .AddToSet(restaurant => restaurant.Grades, firstGradeEntry); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var firstGradeEntry = _restaurantsCollection.Find(filter).FirstOrDefault().Grades[0]; var update = Builders<Restaurant>.Update .AddToSet(restaurant => restaurant.Grades, firstGradeEntry); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
添加多个值
要向大量添加多个值,请调用 Builders.Update.PushEach()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,用于指定要向其中添加一个或多个值的大量字段。 数据类型: |
| 要添加到大量字段的值。 数据类型: |
| 要在大量中保留的元素数,更新后从大量的开头开始计数。如果值为负数,则该方法从大量末尾开始保留指定数量的元素。 数据类型: |
| 大量中添加值的位置。默认,该方法会将值添加到大量的末尾。 数据类型: |
| 一个 数据类型: SortDefinition<TItem> |
以下代码示例使用 PushEach()
方法将两个新的 GradeEntry
对象添加到所有匹配文档中 Grades
大量的开头。然后,它根据 Score
字段的值对大量元素进行降序排序。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.Now, Grade = "A", Score = 95 }, new GradeEntry { Date = DateTime.Now, Grade = "B+", Score = 89,} }; var scoreSort = Builders<GradeEntry>.Sort.Descending(g => g.Score); var update = Builders<Restaurant>.Update.PushEach( "Grades", newGrades, position: 0, sort: scoreSort); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.Now, Grade = "A", Score = 95 }, new GradeEntry { Date = DateTime.Now, Grade = "B+", Score = 89,} }; var scoreSort = Builders<GradeEntry>.Sort.Descending(g => g.Score); var update = Builders<Restaurant>.Update.PushEach( "Grades", newGrades, position: 0, sort: scoreSort); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
要将多个值添加到大量(但前提是大量中尚不存在这些值),请调用 Builders.Update.AddToSetEach()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,用于指定要向其中添加一个或多个值的大量字段。 数据类型: |
| 要添加到大量字段的值。 数据类型: |
以下代码示例调用 AddToSetEach()
方法以将第一个和第二个 GradeEntry
对象重新添加到所有匹配文档中的 Grades
大量。由于这些值已存在于大量中,因此更新操作不会执行任何操作。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var doc = _restaurantsCollection.Find(filter).FirstOrDefault(); var firstGradeEntries = new List<GradeEntry> { doc.Grades[0], doc.Grades[1] }; var update = Builders<Restaurant>.Update .AddToSetEach(restaurant => restaurant.Grades, firstGradeEntries); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var doc = _restaurantsCollection.Find(filter).FirstOrDefault(); var firstGradeEntries = new List<GradeEntry> { doc.Grades[0], doc.Grades[1] }; var update = Builders<Restaurant>.Update .AddToSetEach(restaurant => restaurant.Grades, firstGradeEntries); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
Remove Values
以下部分说明如何从大量字段中删除值。
第一个值
要从大量删除第一个值,请调用 Builders.Update.PopFirst()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要从中删除第一个值的大量字段。 数据类型: |
以下代码示例使用 PopFirst()
方法从所有匹配文档的 Grades
大量中删除第一个 GradeEntry
对象:
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var update = Builders<Restaurant>.Update .PopFirst(restaurant => restaurant.Grades); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var update = Builders<Restaurant>.Update .PopFirst(restaurant => restaurant.Grades); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
最后一个值
要从大量删除最后一个值,请调用 Builders.Update.PopLast()
方法:该方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要从中删除最后一个值的大量字段。 数据类型: |
以下代码示例使用 PopLast()
方法从所有匹配文档的 Grades
大量中删除最后一个 GradeEntry
对象:
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var update = Builders<Restaurant>.Update .PopLast(restaurant => restaurant.Grades); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var update = Builders<Restaurant>.Update .PopLast(restaurant => restaurant.Grades); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
值的所有实例
要从大量中删除特定值的所有实例,请调用 Builders.Update.Pull()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要从中删除值的大量字段。 数据类型: |
| 要从大量字段中删除的值。 数据类型: |
以下代码示例使用 Pull()
方法从所有匹配文档的 Grades
大量中删除特定 GradeEntry
对象的所有实例:
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Add duplicate values to Grades array var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95 }, new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95,} }; var addUpdate = Builders<Restaurant>.Update .PushEach("Grades", newGrades); _restaurantsCollection.UpdateMany(filter, addUpdate); // Remove duplicates from Grades array var pullUpdate = Builders<Restaurant>.Update .Pull(restaurant => restaurant.Grades, newGrades[0]); var result = _restaurantsCollection.UpdateMany(filter, pullUpdate); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Add duplicate values to Grades array var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95 }, new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95,} }; var addUpdate = Builders<Restaurant>.Update .PushEach("Grades", newGrades); await _restaurantsCollection.UpdateManyAsync(filter, addUpdate); // Remove duplicates from Grades array var pullUpdate = Builders<Restaurant>.Update .Pull(restaurant => restaurant.Grades, newGrades[0]); var result = await _restaurantsCollection.UpdateManyAsync(filter, pullUpdate); return result;
多个值的所有实例
要从大量删除多个特定值的所有实例,请调用 Builders.Update.PullAll()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要从中删除值的大量字段。 数据类型: |
| 要从大量字段中删除的值。 数据类型: |
以下代码示例使用 PullAll()
方法从所有匹配文档的 Grades
大量中删除两个特定 GradeEntry
对象的所有实例:
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Add duplicate values to Grades array var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95 }, new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95,}, new GradeEntry { Date = DateTime.MinValue, Grade = "B", Score = 85 }, new GradeEntry { Date = DateTime.MinValue, Grade = "B", Score = 85,} }; var addUpdate = Builders<Restaurant>.Update .PushEach("Grades", newGrades); _restaurantsCollection.UpdateMany(filter, addUpdate); // Remove duplicates from Grades array var gradesToRemove = new List<GradeEntry> { newGrades[0], newGrades[2] }; var pullUpdate = Builders<Restaurant>.Update .PullAll(restaurant => restaurant.Grades, gradesToRemove); var result = _restaurantsCollection.UpdateMany(filter, pullUpdate); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Add duplicate values to Grades array var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95 }, new GradeEntry { Date = DateTime.MinValue, Grade = "A", Score = 95,}, new GradeEntry { Date = DateTime.MinValue, Grade = "B", Score = 85 }, new GradeEntry { Date = DateTime.MinValue, Grade = "B", Score = 85,} }; var addUpdate = Builders<Restaurant>.Update .PushEach("Grades", newGrades); await _restaurantsCollection.UpdateManyAsync(filter, addUpdate); // Remove duplicates from Grades array var gradesToRemove = new List<GradeEntry> { newGrades[0], newGrades[2] }; var pullUpdate = Builders<Restaurant>.Update .PullAll(restaurant => restaurant.Grades, gradesToRemove); var result = await _restaurantsCollection.UpdateManyAsync(filter, pullUpdate); return result;
匹配条件的所有值
要从大量中删除与特定条件匹配的所有值,请调用 Builders.Update.PullFilter()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要从中删除值的大量字段。 数据类型: |
| 查询过滤,用于指定要删除的值的条件。 数据类型: FilterDefinition<TItem> |
以下代码示例使用 PullFilter()
方法从匹配文档的 Grades
大量中删除Grade
值为 "F"
的所有 GradeEntry
对象:
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Add GradeEntry values with "Grade = F" to Grades array var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 10 }, new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 21,}, new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 47 }, new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 6,} }; var addUpdate = Builders<Restaurant>.Update .PushEach("Grades", newGrades); _restaurantsCollection.UpdateMany(filter, addUpdate); // Remove all "Grade = F" values from Grades array var pullUpdate = Builders<Restaurant>.Update .PullFilter(restaurant => restaurant.Grades, gradeEntry => gradeEntry.Grade == "F"); var result = _restaurantsCollection.UpdateMany(filter, pullUpdate); return result;
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Add GradeEntry values with "Grade = F" to Grades array var newGrades = new List<GradeEntry> { new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 10 }, new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 21,}, new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 47 }, new GradeEntry { Date = DateTime.Now, Grade = "F", Score = 6,} }; var addUpdate = Builders<Restaurant>.Update .PushEach("Grades", newGrades); await _restaurantsCollection.UpdateManyAsync(filter, addUpdate); // Remove all "Grade = F" values from Grades array var pullUpdate = Builders<Restaurant>.Update .PullFilter(restaurant => restaurant.Grades, gradeEntry => gradeEntry.Grade == "F"); var result = await _restaurantsCollection.UpdateManyAsync(filter, pullUpdate); return result;
更新匹配值
要更新大量字段中的值,请调用 Builders.Update.Set()
方法。此方法接受以下参数:
Parameter | 说明 |
---|---|
| 一个表达式,指定要更新的大量字段。 数据类型: |
| 要设立到大量字段中的新值。 数据类型: |
您可以将位置操作符与 Set()
方法结合使用来查询和更新大量中的特定值。如果您使用的是 LINQ3 提供商,则.NET/ C#驱动程序还支持 LINQ 语法来代替位置操作符。
以下部分介绍了更新大量字段中匹配值的不同方法。
第一个匹配值
若要更新大量中的第一个值,可以使用位置操作符($
) 或 LINQ 语法。选择 Positional Operator 或 LINQ标签页以查看相应的语法。
以下示例使用Set()
方法和位置操作符更新所有匹配文档中的Grades
大量。首先,它仅查找 GradeEntry
Grades
大量中Grade
属性值为 的第一个"A"
对象。然后,它将第一个匹配的Score
GradeEntry
对象的 属性更新为100 。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli") & Builders<Restaurant>.Filter.Eq("grades.grade", "A"); // Set Score = 100 in first GradeEntry where Grade = "A" var update = Builders<Restaurant>.Update .Set("grades.$.score", 100); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
注意
要使用位置操作符,大量字段必须是查询过滤的一部分。
以下示例使用Set()
方法和位置操作符更新所有匹配文档中的Grades
大量。首先,它仅查找 GradeEntry
Grades
大量中Grade
属性值为 的第一个"A"
对象。然后,它将第一个匹配的Score
GradeEntry
对象的 属性更新为100 。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli") & Builders<Restaurant>.Filter.Eq("grades.grade", "A"); // Set Score = 100 in first GradeEntry where Grade = "A" var update = Builders<Restaurant>.Update .Set("grades.$.score", 100); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
注意
要使用位置操作符,大量字段必须是查询过滤的一部分。
以下示例使用Set()
FirstMatchingElement()
和Grades
方法更新所有匹配文档中的 大量。首先,它仅查找 GradeEntry
Grades
大量中Grade
属性值为 的第一个"A"
对象。然后,它将第一个匹配的Score
GradeEntry
对象的 属性更新为100 。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli") & Builders<Restaurant>.Filter.Eq("grades.grade", "A"); // Set Score = 100 in first GradeEntry where Grade = "A" var update = Builders<Restaurant>.Update .Set(restaurant => restaurant.Grades.FirstMatchingElement().Score, 100); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
以下示例使用Set()
FirstMatchingElement()
和Grades
方法更新所有匹配文档中的 大量。首先,它仅查找 GradeEntry
Grades
大量中Grade
属性值为 的第一个"A"
对象。然后,它将第一个匹配的Score
GradeEntry
对象的 属性更新为100 。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli") & Builders<Restaurant>.Filter.Eq("grades.grade", "A"); // Set Score = 100 in first GradeEntry where Grade = "A" var update = Builders<Restaurant>.Update .Set(restaurant => restaurant.Grades.FirstMatchingElement().Score, 100); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
所有匹配值
若要更新大量中与指定条件匹配的所有值,可以使用筛选位置操作符($[<identifier>]
) 或 LINQ 语法。选择 Positional Operator 或 LINQ标签页以查看相应的语法。
以下示例使用 Set()
方法和过滤后的位置操作符,将所有匹配文档中 Grades
大量中所有匹配 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var arrayFilters = new List<ArrayFilterDefinition> { new BsonDocumentArrayFilterDefinition<Restaurant>( new BsonDocument { { "gradeEntry.score", new BsonDocument { { "$gte", 94} } } }) }; // Set Grade = "A" in all GradeEntry objects where Score >= 94 var update = Builders<Restaurant>.Update .Set("grades.$[gradeEntry].grade", "A"); var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters }; var result = _restaurantsCollection.UpdateMany(filter, update, updateOptions); return result;
以下示例使用 Set()
方法和过滤后的位置操作符,将所有匹配文档中 Grades
大量中所有匹配 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var arrayFilters = new List<ArrayFilterDefinition> { new BsonDocumentArrayFilterDefinition<Restaurant>( new BsonDocument { { "gradeEntry.score", new BsonDocument { { "$gte", 94} } } }) }; // Set Grade = "A" in all GradeEntry objects where Score >= 94 var update = Builders<Restaurant>.Update .Set("grades.$[gradeEntry].grade", "A"); var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters }; var result = await _restaurantsCollection.UpdateManyAsync(filter, update, updateOptions); return result;
以下示例使用 Set()
和 AllMatchingElements()
方法将所有匹配文档中 Grades
大量中所有匹配 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var arrayFilters = new List<ArrayFilterDefinition> { new BsonDocumentArrayFilterDefinition<Restaurant>( new BsonDocument { { "gradeEntry.score", new BsonDocument { { "$gte", 94} } } }) }; // Set Grade = "A" in all GradeEntry objects where Score >= 94 var update = Builders<Restaurant>.Update .Set(restaurant => restaurant.Grades.AllMatchingElements("gradeEntry").Grade, "A"); var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters }; var result = _restaurantsCollection.UpdateMany(filter, update, updateOptions); return result;
以下示例使用 Set()
和 AllMatchingElements()
方法将所有匹配文档中 Grades
大量中所有匹配 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); var arrayFilters = new List<ArrayFilterDefinition> { new BsonDocumentArrayFilterDefinition<Restaurant>( new BsonDocument { { "gradeEntry.score", new BsonDocument { { "$gte", 94} } } }) }; // Set Grade = "A" in all GradeEntry objects where Score >= 94 var update = Builders<Restaurant>.Update .Set(restaurant => restaurant.Grades.AllMatchingElements("gradeEntry").Grade, "A"); var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters }; var result = await _restaurantsCollection.UpdateManyAsync(filter, update, updateOptions); return result;
All Values
若要更新大量中与查询过滤匹配的所有值,可以使用全位置操作符($[]
) 或 LINQ 语法。选择 Positional Operator 或 LINQ标签页以查看相应的语法。
以下示例使用 Set()
方法和全位置操作符,将所有匹配文档中 Grades
大量中所有 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Set Score = 100 in all GradeEntry objects var update = Builders<Restaurant>.Update .Set("grades.$[].score", 100); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
以下示例使用 Set()
方法和全位置操作符,将所有匹配文档中 Grades
大量中所有 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Set Score = 100 in all GradeEntry objects var update = Builders<Restaurant>.Update .Set("grades.$[].score", 100); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
以下示例使用 Set()
和 AllElements()
方法将所有匹配文档中 Grades
大量中所有 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Set Score = 100 in all GradeEntry objects var update = Builders<Restaurant>.Update .Set(restaurant => restaurant.Grades.AllElements().Score, 100); var result = _restaurantsCollection.UpdateMany(filter, update); return result;
以下示例使用 Set()
和 AllElements()
方法将所有匹配文档中 Grades
大量中所有 GradeEntry
对象的 Score
属性更新为 100。
var filter = Builders<Restaurant>.Filter.Eq("name", "Downtown Deli"); // Set Score = 100 in all GradeEntry objects var update = Builders<Restaurant>.Update .Set(restaurant => restaurant.Grades.AllElements().Score, 100); var result = await _restaurantsCollection.UpdateManyAsync(filter, update); return result;
API 文档
有关本指南中讨论的任何方法或类型的更多信息,请参阅以下API文档: