Types 如何在MongoDB中更改类型?

Types 如何在MongoDB中更改类型?,types,mongodb,Types,Mongodb,假设我有一个整数文档 当我尝试将该值设置为3.5时,它仍然是整数: db.users.update({}, {$set:{balance:3.5}}) 如何将其更改为float/decimal?请检查update()语法。update()的第一个参数始终是查询 不是UPDATE子句。我刚刚做了一些c#示例: 但若您试图在更新后自动地将测试类理想化,它将抛出错误,因为SomeIntegerField的类型将是Float64。所以对于这种情况,我建议编写单元测试 希望这对你有所帮助。你说得对。那

假设我有一个整数文档

当我尝试将该值设置为3.5时,它仍然是整数:

 db.users.update({}, {$set:{balance:3.5}})
如何将其更改为float/decimal?

请检查update()语法。update()的第一个参数始终是查询
不是UPDATE子句。

我刚刚做了一些c#示例:

但若您试图在更新后自动地将测试类理想化,它将抛出错误,因为SomeIntegerField的类型将是Float64。所以对于这种情况,我建议编写单元测试


希望这对你有所帮助。

你说得对。那是个打字错误。我在查询中使用了正确的选项。2个问题:#1:你真的打算更新所有内容吗?如果是这样,您没有使用multiple标志,为什么不呢#2:你是从一个司机的壳里做这件事的吗?如果是驱动程序,我们需要知道是哪个驱动程序。在这种情况下,反序列化程序将抛出TruncationException,因为存储在数据库中的值不能存储在Int32属性中而不会丢失精度。如果您希望通过将3.5值截断为3来无异常地反序列化该值,则可以向SomeIntegerField添加一个属性:[BsonRepresentation(BsonType.Int32,AllowRunLocation=true)]。
    public class Test
    {
       [BsonId]
       public string Id { get; set; }

       public int SomeIntegerField { get; set; }
    }

    [TestMethod]
    public void TypesTest()
    {
        var db = MongoRead.Instance;
        var collection = db.Database.GetCollection("test");
        var id = Guid.NewGuid().ToString();
        var test = new Test() { SomeIntegerField = 5, Id = id };
        collection.Insert(test);  //here type of SomeIntegerField in mongodb Integer

        //but after update type become Float64
        collection.Update(Query.EQ("_id", id), Update.Set("SomeIntegerField", 3.5));
  }