【问题标题】:Multiple documents update mongodb casbah scala多个文档更新 mongodb casbah scala
【发布时间】:2013-02-12 20:05:57
【问题描述】:

我有两个 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 是第一个(促销)集合的(虚拟)外键。每个声明都应在“promo”集合中增加一个计数器“qtClaimd”。以事务方式增加另一个集合中的值的最佳方法是什么?我知道 MongoDB 没有多个文档的隔离。

另外,我采用“非嵌入式”方法的原因如下

促销被创建并发布给用户,然后索赔将以成千上万的数量发生。我认为将声明嵌入促销集合中是不合逻辑的,因为写入的数量将发生在单个文档中('coz mongo 在大小因数千个声明而增加时调整促销集合的大小)。采用非嵌入式方法使促销集合不受影响,但在“声明”集合中插入新文档。稍后在生成报告时,我必须显示“促销”详细信息以及该促销的“声明”详细信息。使用非嵌入式方法,我必须首先查询“promo”集合,然后使用“proId”查询“claims”集合。 *还值得一提的是,有时同一“促销”可能会同时发生 100 次“索赔”*

用这两个集合实现交互效果的最佳方法是什么?我在 Scala 2.10 版本中使用 Scala、Casbah 和 Salat。

【问题讨论】:

    标签: mongodb scala casbah salat mongodb-scala


    【解决方案1】:
    db.bar.update({ id: 1 }, { $inc: { 'some.counter': 1 } });
    

    看看如何使用 SalatDAO 运行它,我不是游戏用户,所以我不想给你错误的建议。 $inc 是 Mongo 的递增方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 2019-09-19
      • 2020-09-05
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多