Mongodb 更新一级阵列使用任何版本我需要更新请在这里建议

Mongodb 更新一级阵列使用任何版本我需要更新请在这里建议,mongodb,Mongodb,我在应用程序中使用mongoDb。这里我面临查询数据库的问题。 我的问题是: 我想在查询条件children.cars.carmodel=22上设置一个字段children.cars.carname='vws' db.selectone.update({'children.cars':{$elemMatch:{'carmodel':22}}},{$set:{'children.cars.$.carname':'vws'}}); WriteResult({

我在应用程序中使用mongoDb。这里我面临查询数据库的问题。 我的问题是:

我想在查询条件children.cars.carmodel=22上设置一个字段children.cars.carname='vws'

db.selectone.update({'children.cars':{$elemMatch:{'carmodel':22}}},{$set:{'children.cars.$.carname':'vws'}});
            WriteResult({
                "nMatched" : 0,
                "nUpserted" : 0,
                "nModified" : 0,
                "writeError" : {
                    "code" : 16837,
                    "errmsg" : "cannot use the part (children of children.cars.0.carname) to traverse the element ({children: [ { cars: [ { carname: \"tata\", carmodel: 23.0 }, { carname: \"nano\", carmodel: 22.0 } ] } ]})"
            }
        })
集合名称为selectone:


您的问题是您的孩子是一个数组:

{
    title: "Parent1",
    children: [{
        cars: [{
            carname: 'tata',
            carmodel:23
          },{
            carname:'nano',
            carmodel:22
        }]
    }]
}
一个对象的{cars:[…]}。当你进行更新时,你把它当作一个对象。如果要将架构更改为

{
        title: "Parent1",
        children: {
            cars: [{
                carname: 'tata',
                carmodel:23
              },{
                carname:'nano',
                carmodel:22
            }]
        }
   }

请注意,现在children是一个对象,它应该可以工作。另外,请记住,在数据库中使用无模式文档的想法并不意味着您可以在集合中使用数组中数十层嵌套的任何内容,然后以某种方式希望创建一个查询来使用它。这个想法是,模式不像RDBMs那样严格。

我需要的子对象应该是一个包含cars的数组,而且我可以在子对象中插入不同类型的向量子对象:[{cars:[]}]@NareshKumar得到了它。对不起,但在这种情况下,我不知道如何实现这一点。至少我告诉了你错误的原因。我建议你更新这个问题,这样其他人就会知道你真的需要这些孩子
{
        title: "Parent1",
        children: {
            cars: [{
                carname: 'tata',
                carmodel:23
              },{
                carname:'nano',
                carmodel:22
            }]
        }
   }