使用新字段mongodb更新数组中的对象

时间:2014-06-06 05:48:00

标签: ruby mongodb mongoid

ai有一些mongodb文件

horses是id,name,type

的数组
{
    "_id" : 33333333333,
    "horses" : [ 
        {
            "id" : 72029,
            "name" : "Awol",
            "type" : "flat",
        }, 
        {
            "id" : 822881,
            "name" : "Give Us A Reason",
            "type" : "flat",
        }, 
        {
            "id" : 826474,
            "name" : "Arabian Revolution",
            "type" : "flat",

        }
}

我需要添加新字段

我想到了这样的事情,但我没有想到他的头脑

horse = {
   "place" : 1,
   "body"  : 11

}

Card.where({'_id' => 33333333333}).find_and_modify({'$set' => {'horses.' + index.to_s => horse}}, upsert:true)

但是所有现有字段都被删除并插入新的方法,这将是添加到现有

的新字段

1 个答案:

答案 0 :(得分:2)

实际上,此命令将覆盖子文档

'$set': {
  'horses.0': {
   "place" : 1,
   "body"  : 11

  }
}

您需要设置单个字段:

'$set': {
  'horses.0.place': 1,
  'horses.0.body': 11
}