![](/img/trans.png)
[英]Scala: Example of using Casbah to write / update / delete objects in MongoDB?
[英]Multiple documents update mongodb casbah 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" : ObjectId("5117c749195d62a666171968"),
"proId" : ObjectId("5115bedc195dcf55d8740f1e"),
"claimT" : ISODate("2013-02-10T16:14:01.921Z")
}
每当有人要求促销时,都会在“ claimedPro”集合中创建一个新文档,其中proId是第一个(促销)集合的(虚拟)外键。 每个声明都应在“促销”集合中增加一个计数器“ qtClaimd”。 以事务方式增加另一个集合中的值的最佳方法是什么? 我了解MongoDB没有隔离多个文档的功能。
另外,我采用“非嵌入式”方法的原因如下
创建促销并将其发布给用户,然后声称将发生数十万次。 考虑到将在单个文档中进行写操作的次数,我不认为将声明嵌入促销集合中是合乎逻辑的(由于成千上万的声明,当大小增加时,'coz mongo会调整促销集合的大小)。 采用非嵌入式方法可以使促销收藏不受影响,但可以在“声明”收藏中插入新文档。 稍后在生成报告时,我将必须显示该促销的“促销”详细信息以及“声明”详细信息。 使用非嵌入式方法,我必须首先查询“ promo”集合,然后使用“ proId”查询“ claims”集合。 * 还值得一提的是,对于同一“促销”,有时可能会同时发生数百个“声明” 。
通过这两个集合来达到交易效果的最佳方法是什么? 我正在使用Scala 2.10版本的Scala,Casbah和Salat。
db.bar.update({ id: 1 }, { $inc: { 'some.counter': 1 } });
只是看看如何使用SalatDAO来运行它,我不是游戏用户,所以我不想为您提供错误的建议。 $inc
是Mongo递增的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.