Docs 菜单
Docs 主页
/ / /
C#/.NET
/ / / /

更新字段

在此页面上

  • Overview
  • 样本数据
  • 将值相加
  • 将值相乘
  • 重命名字段
  • 设置值
  • 通过比较设置
  • 插入时设置
  • 设置当前日期
  • 取消设置字段
  • API 文档

在此页面上,您可以学习;了解如何使用MongoDB .NET/ C#驱动程序更新多个MongoDB文档中的字段。本页介绍如何创建UpdateDefinition<TDocument> 对象来指定要对字段执行的更新操作。您可以将这些对象传递给 更新多个页面中描述的更新方法。

.NET/ C#驱动程序支持 MongoDB Server手册中描述的字段更新操作符。要指定更新操作,请从 Builders.Update属性中调用相应的方法。以下部分更详细地描述了这些方法。

注意

方法重载

本指南中的示例使用 sample_restaurants 数据库中的 restaurants 集合。此集合中的文档使用以下 RestaurantAddressGradeEntry 类作为模型:

public class Restaurant
{
public ObjectId Id { get; set; }
public string Name { get; set; }
[BsonElement("restaurant_id")]
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; }
[BsonElement("coord")]
public double[] Coordinates { get; set; }
public string Street { get; set; }
[BsonElement("zipcode")]
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.Inc() 方法。此方法接受以下参数:

Parameter
说明

field

指定要递增的字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

value

字段递增的量。

数据类型: TField

要将字段的值乘以特定数量,请调用 Builders.Update.Mul() 方法。此方法接受以下参数:

Parameter
说明

field

指定要更新字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

value

与字段相乘的量。

数据类型: TField

要重命名字段,请调用 Builders.Update.Rename() 方法。此方法接受以下参数:

Parameter
说明

field

指定要重命名的字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

newName

字段的新名称。

数据类型: string

要将字段的值设立为特定值,请调用 Builders.Update.Set() 方法。此方法接受以下参数:

Parameter
说明

field

指定要更新字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

value

要为字段设立的值。

数据类型: TField

要将字段的值更新为指定值,但前提是指定值大于字段的当前值,请调用 Builders.Update.Max()方法。此方法接受以下参数:

Parameter
说明

field

指定要更新字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

value

要为字段设立的值。

数据类型: TField

要将字段的值更新为指定值,但仅当指定值小于字段的当前值时,请调用 Builders.Update.Min()方法。此方法接受以下参数:

Parameter
说明

field

指定要更新字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

value

要为字段设立的值。

数据类型: TField

要仅在通过同一操作更新或插入文档时设立字段的值,请调用 Builders.Update.SetOnInsert() 方法。此方法接受以下参数:

Parameter
说明

field

指定要更新字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

value

要为字段设立的值。

数据类型: TField

要将字段的值设立为当前日期和时间,请调用 Builders.Update.CurrentDate() 方法。此方法接受以下参数:

Parameter
说明

field

指定要更新字段的表达式。

数据类型: Expression<Func<TDocument, TField>>

type

日期和时间的格式,在 UpdateDefinitionCurrentDateType枚举中定义。默认值为 null

数据类型: UpdateDefinitionCurrentDateType?

要从文档删除字段,请调用 Builders.Update.Unset() 方法。此方法接受以下参数:

Parameter
说明

field

一个表达式,指定要删除的字段。

数据类型: Expression<Func<TDocument, TField>>

有关本指南中讨论的任何方法的更多信息,请参阅以下API文档:

后退

UpdateMany