yii2 mongodb的更新嵌入式阵列

问题描述 投票:0回答:2

如何更新会员年龄使用yii2 TEST1他的名字? 用下面的代码更新,但我有指定的指标,我想了指定的索引。

用户:: updateAll([ '$组'=> [ 'Addresses.0.members.0.age'=> 100]],[ 'IN', 'Addresses.members.name',[ 'TEST1']]) ;

{
    "_id" : ObjectId("595209b65312f48195fb2e01"),
    "username" : "Test name",
    "Addresses" : [
            {
                    "address_no" : 1,
                    "Address" : "Test house",
                    "City" : "test city",
                    "State" : "Test state",
                    "Mobile" : "9999999",
                    "members" : [
                            {
                                    "name" : "TEST1",
                                    "age" : 35
                            },
                            {
                                    "name" : "TEST2",
                                    "age" : 30
                            },
                    ]
            },
            {
                    "address_no" : 2,
                    "Address" : "2B, Test place",
                    "City" : "Test city",
                    "State" : "Test State",
                    "Pincode" : "12345",
                    "Phone" : "1234568789",
                    "Mobile" : 9999999999
            }
    ],
    "Beneficiaries" : [
            {
                    "beneficiary_id" : 1,
                    "Name" : "Test1",
                    "Age" : "28",
                    "Sex" : "F"
            }
    ],
    "auth_key" : "esd8d89ds89ds89ds89ds",

}

php mongodb yii2
2个回答
0
投票

position operator $做这种工作的

{ 
    "Addresses.members.name" : "TEST2",
},
{ 
     $set: {
          "Addresses.$.members.0.age" : 40  
     }
}

在这里,我定的第一指标,因为它支持最多的一个级别深度。

新功能可能在将来版本解决该问题:https://jira.mongodb.org/browse/SERVER-831


0
投票
       Yii::$app->mongodb->getCollection('user')->update(['_id' => $id, 'members.name' => 'Test1'], ['$set' => [
                'members.$.age' => 100,
        ]]);
© www.soinside.com 2019 - 2024. All rights reserved.