任何机构都知道如何更新特定匹配元素,如下面的选择查询
$account = $query->from('user')
->where([
'email_account' => [
'$elemMatch' => [
'email' => 'abcd@gmail.com'
],
],
])
->andWhere(['_id' => $userId])
->all();
如果您知道该元素的更新查询,请让我知道,所以我可以更新Yii的对象下面
"email_account" : [
{
"name" : "abcd",
"email" : "abcd@gmail.com",
"password" : "abcd",
},
{
"name" : "test",
"email" : "test@gmail.com",
"password" : "test",
}
]
答案 0 :(得分:0)
如果您使用任何更新运算符,例如 $set
来更新name
字段,请将其与 {{3}一起使用} $
标识匹配数组项在查询中的位置,然后对其进行操作。
使用没有Active Record和MongoDB的以下示例 直接调用数据库:
$criteria = ['_id' => $userId, 'email_account.email' => 'abcd@gmail.com' ];
$modifier = [
'$set' => [
'email_account.$.name' => 'Jane Doe'
]
];
Yii::app()->mongodb->getCollection('collectionName')->update($criteria, $modifier);