如何在MongoDB中更改类型?

时间:2011-01-25 06:15:03

标签: types mongodb

假设我有一个整数文档。

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

 db.users.update({}, {$set:{balance:3.5}})

如何将其更改为float / decimal?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我刚做了一些例子c#:

    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));
  }

但是如果你尝试在更新后自动取消测试类,它会抛出错误,因为SomeIntegerField的类型将是Float64。所以对于这种情况,我建议写单元测试。

希望这对你有所帮助。