【问题标题】:mongodb: inc high level document and embedded documentmongodb:inc 高级文档和嵌入式文档
【发布时间】:2012-12-12 01:22:12
【问题描述】:

我想增加两个值,一个在高级文档中,一个在嵌入文档中:

{
  studentId: "x1"
  numberOfAttending: 2

  courses: [
    {
      courseId:"y1"
      numberOfAttending: 1
    },
    {
      courseId:"y2"
      numberOfAttending: 1
    }
  ]
}

我如何计算学生和课程的参加人数(更新插入)。我可以用一个更新查询来做吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    这会很困难,因为courses 是一个数组。您需要知道要更新的课程的索引,然后执行以下操作:

    { '$inc' : {numberOfAttending : 1, 'courses.1.numberOfAttending' : 1}}

    您是否考虑过将其切换为单个嵌入式文档,并以 courseId 作为每门课程的关键字?如果是这样,您可以运行这样的命令来增加两者。这不依赖于位置,因此它不会那么脆弱:

    { '$inc' : { numberOfAttending : 1, 'courses.y2.numberOfAttending' : 1}}

    【讨论】:

    • 如果我错了,请纠正我,如果我切换到“以 courseId 作为每个键的单个嵌入式文档”,我无法进行索引?还是有办法?
    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多