多文档更新mongodb casbah scala
我有两个MongoDB系列 宣传短片集:多文档更新mongodb casbah scala,mongodb,scala,casbah,salat,mongodb-scala,Mongodb,Scala,Casbah,Salat,Mongodb Scala,我有两个MongoDB系列 宣传短片集: { "_id" : ObjectId("5115bedc195dcf55d8740f1e"), "curr" : "USD", "desc" : "durable bags.", "endDt" : "2012-08-29T16:04:34-04:00", origPrice" : 1050.99, "qtTotal" : 50, "qtClaimd" : 30, } { "_id" :
{
"_id" : ObjectId("5115bedc195dcf55d8740f1e"),
"curr" : "USD",
"desc" : "durable bags.",
"endDt" : "2012-08-29T16:04:34-04:00",
origPrice" : 1050.99,
"qtTotal" : 50,
"qtClaimd" : 30,
}
{
"_id" : ObjectId("5117c749195d62a666171968"),
"proId" : ObjectId("5115bedc195dcf55d8740f1e"),
"claimT" : ISODate("2013-02-10T16:14:01.921Z")
}
声称的收集:
{
"_id" : ObjectId("5115bedc195dcf55d8740f1e"),
"curr" : "USD",
"desc" : "durable bags.",
"endDt" : "2012-08-29T16:04:34-04:00",
origPrice" : 1050.99,
"qtTotal" : 50,
"qtClaimd" : 30,
}
{
"_id" : ObjectId("5117c749195d62a666171968"),
"proId" : ObjectId("5115bedc195dcf55d8740f1e"),
"claimT" : ISODate("2013-02-10T16:14:01.921Z")
}
无论何时有人申请促销,都会在“claimedPro”集合中创建一个新文档,其中proId是第一个(促销)集合的(虚拟)外键。每个索赔都应在“促销”集合中增加一个计数器“qtClaimd”。以事务方式在另一个集合中增加价值的最佳方式是什么?我知道MongoDB没有对多个文档进行隔离
另外,我选择“非嵌入式”方法的原因如下
promo被创建并发布给用户,然后索赔将以100到数千的金额发生。我不认为将声明嵌入到promo集合中是合乎逻辑的,因为单个文档中会发生写入次数(“因为mongo会在数千个声明导致大小增加时调整promo集合的大小”)。采用非嵌入式方法可以使促销品集合不受影响,但可以在“索赔”集合中插入新文档。稍后在生成报告时,我必须显示“促销”详细信息以及该促销的“索赔”详细信息。使用非嵌入式方法,我必须首先查询“promo”集合,然后使用“proId”查询“claims”集合*同样值得一提的是,对于同一个“促销”,有时可能会同时发生100次“索赔”*
用这两个系列来实现trnsAction效果的最佳方法是什么?我正在使用Scala、Casbah和Salat,所有这些都是Scala 2.10版本
db.bar.update({ id: 1 }, { $inc: { 'some.counter': 1 } });
看看如何用SalatDAO运行这个,我不是游戏用户,所以我不想给你错误的建议$inc
是Mongo的增量方式
看看如何用SalatDAO运行这个,我不是游戏用户,所以我不想给你错误的建议$inc
是Mongo的增量方式