文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用Norm驱动对 MongoDb 做更新操作时,要注意更新数据的类型

使用Norm驱动对 MongoDb 做更新操作时,要注意更新数据的类型

时间:2011-01-04  来源:向往-SONG

 

我用的是Norm驱动,感觉要比MongoDb自带的驱动用起来爽多了,强类型支持使用方便直观!

 

先上模型和Action代码,做个简单的实例:

 

Model:Product类

代码
public class Product
{
public string Id { get; set; }

[Required]
public int Category { get; set; }

[Required]
public string Name { get; set; }

[Required]
public float Price { get; set; }

public Product()
{
Id
= System.Guid.NewGuid().ToString();
}
}

 

Action:批量更新方法

 

 

 

代码
public ActionResult BatchUpdate()
{
MongoDb.Get
<Product>()         //将价格等于123的产品的价格改为100
.Update(
new { Price = 123 }, p => p.SetValue(y => y.Price, 100f), true, false);
return RedirectToAction("List", new { cate = 1, page = 1 });
}

 

 Action:产品列表方法

代码
public ActionResult List(int cate, int page)
{
IEnumerable
<Product> list = MongoDb.Get<Product>()
.Find(
new { Category = cate });
return View(list);
}

  

 

在BatchUpdate方法中,p.SetValue(y =>y.Price, 100f)中的100f的f一定不能少,否则它会当做int类型存储,更新的方法不会报错,

但跳转到List页面调用Find方法时,它就报如下图这么个奇怪的错误! 

 

 

然后我到控制台上db.Product.Remove({Price:100})掉刚才错误设置的记录,再刷新List页面,就没有报错了。

 

不知道有谁碰见过没有,第一次用MongoDb请大家多多指点。

排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载