我有两个MongoDB的集合多个文档更新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" : ObjectId("5117c749195d62a666171968"),
"proId" : ObjectId("5115bedc195dcf55d8740f1e"),
"claimT" : ISODate("2013-02-10T16:14:01.921Z")
}
每当有人声称促销,新文件将被创建其中proId是第一个(促销)收藏的(虚拟)外键。每个声明都应增加“促销”集合中的“qtClaimd”计数器。以事务性方式增加另一个集合中的值的最佳方式是什么?我知道MongoDB没有隔离多个文档。
另外,之所以我去“非嵌入式”的做法是遵循
宣传片被创建并发布到用户,那么索赔将数千数百金额发生。考虑到写入次数会在单个文档中发生,因此我认为在宣传集合中嵌入声明是不合逻辑的('因为数以千计的声明导致大小增加时,会调整大小的促销集合')。采用非嵌入式方法可以使促销收藏不受影响,但可以在“索赔”集合中插入新文档。稍后在生成报告时,我将不得不显示“促销”细节以及该促销的“声明”细节。使用非嵌入式方法,我必须首先查询“promo”集合,然后使用“proId”来“索取”集合。 * 另外值得一提的是,可能有几次“索赔”可能同时发生在同一个“促销”*。
用这两个集合实现事务处理效果的最佳方法是什么?我使用Scala 2.10版本的Scala,Casbah和Salat。