在嵌套数组中按数字改变字段

时间:2015-09-18 07:48:37

标签: arrays mongodb

假设有一个包含

等对象的数据结构
{ 
  name : 'ernie',
  likes : [
  {
    what : 'rubber duckie',
    howmuch : 5
  },
  {
    what : 'bert',
    howmuch : 3
  }]
}

{ 
  name : 'cookie monster',
  likes : [
  {
    what : 'cookies',
    howmuch : 100
  }]
}

如果0的{​​{1}} - 数组的ernie元素应该使其likes - 值递增,比如增加1,那么是否存在MongoDB命令做这个? JavaScript等效项为howmuch

具体来说,可以按索引号访问数组的元素吗?

2 个答案:

答案 0 :(得分:1)

要将howmuch字段值增加1个ernie的like-array的0元素,请同时使用 $inc 运算符使用 dot notation 来通过从零开始的索引位置访问数组元素:

db.collection.update(
    {
        "name": "ernie"       
    }, 
    { 
        "$inc" : { "likes.0.howmuch" : 1 } 
    }
)

答案 1 :(得分:0)

你想在数组上创建索引吗?如果是,你必须在'likes'数组上创建索引。使用此代码:db.sample.createIndex ({likes : 1})。或者更具体地说,您必须创建db.sample.createIndex ({'likes.howmuch': 1})

创建索引后,您可以使用索引访问数组元素。