私は次のMongoDBオブジェクトを持っています:
{
"_id": ObjectId("508ec9f413f88da4a590e5ee"),
"beersAndStouts": {
"0": {
"description": "Guinness",
"price": "4.20"
},
"1": {
"description": "Heineken",
"price": "4.80"
},
"2": {
"description": "Carlsberg",
"price": "4.80"
}
},
"snacks": {
"0": {
"description": "King cheese and onion",
"price": "2.20"
},
"1": {
"description": "Tayto cheese and onion",
"price": "1.80"
}
},
"specialOffers": {
"0": {
"description": "Two for one vodka\/red bull",
"price": "8"
}
},
"uname": "Eamorr",
"wines": {
"0": {
"description": "Cabernet Sauvignon",
"price": "5.00"
},
"1": {
"description": "Chardonnay",
"price": "5.00"
}
}
}
そして私は次のPHP変数を持っています:
$category=$_POST['category']; //"beersAndStouts"
$description=$_POST['columnName']; //"Description"
$value=$_POST['value']; //"4.70"
$rowId=$_POST['rowId']; //2
Carlsberg(rowId = 2)の価格を4.80から4.70に変更したい...
そのようなクエリを実行する方法は?
これが私がソファを持っているものです、しかし私は今本当に立ち往生しています...
$priceLists=$mongo->eamorr->priceLists;
$priceLists->update(array('uname'=>$uname),array('$set'=>array($category=>array($rowId=>xxx))));
更新:これが私が使用したコードです:
$mongo=new Mongo();
$priceLists=$mongo->eamorr->priceLists;
$priceList=$priceLists->findOne(array('uname'=>$uname));
$newCategory=$priceList[$category];
$newCategory[$rowId][$description]=$value;
$priceLists->update(array('uname'=>$uname),array('$set'=>array($category=>$newCategory)));
きれいではありませんが、機能し、構造を変更する必要はありません。