0

我很难把我的想法包裹在这件事上。

我想保存每个用户提交的表单的自动递增列表。

我正在尝试实现类似的方案:

users:{
    _id:asfa98s7fasf,
    name:"some name",
    forms:{
       1:{
           _id:asdasdfa8sdf,
           q1:'yes',
           q2:'no',
           q3:'yes'
       }, 
       2:{
           _id:asdasdfgdfgf,
           q1:'no',
           q2:'no',
           q3:'yes'
       }
    }
}

我不明白如何创建自动递增表单。

我想我需要在某个地方使用 ensureIndex 但我不确定。

有人可以指出我正确的方向吗?

谢谢

4

1 回答 1

0

您可以在 2 个操作中执行此操作:

  1. 使用查询查找表单数组中的总元素,N
  2. 使用另一个更新查询再添加一个项目以形成数组,键为 "K+1" 。

您也可以尝试使用非关联数组将元素存储在表单文档中,除非您的键有一些特殊用途,例如:

users:{
    _id:asfa98s7fasf,
    name:"some name",
    forms:[
       {
           _id:asdasdfa8sdf,
           q1:'yes',
           q2:'no',
           q3:'yes'
       }, 
       {
           _id:asdasdfgdfgf,
           q1:'no',
           q2:'no',
           q3:'yes'
       ]
    }

}

然后您可以使用$push运算符将​​元素添加到form数组中,该元素将自动附加到数组的第 3 位。 http://www.mongodb.org/display/DOCS/Updating#Updating-%24push

于 2012-05-30T16:47:46.193 回答