更新嵌套数组MongoDB中的几个值

时间:2013-11-26 16:49:54

标签: php mongodb

我想更新它们匹配给定值的几个元素: 示例:我有一个具有此结构的集合:

 {
 "_id" : ObjectId("52936a0270c68c04063f0300"),
  "channel" : "1",
  "content" : "145548",
  "keywordsValues" : [
                        [ObjectId("52816d3370c68c2c1c4b0500"), ObjectId("52816d3370c68c2c1c9f0500")],
                        [ObjectId("52816d3370c68c2c1c510500"), ObjectId("52816d3370c68c2c1c890500")],
                        [ObjectId("52816d3370c68c2c1c550500"), ObjectId("52816d3370c68c2c1c850500")],
                        [ObjectId("52816d3370c68c2c1c6b0500"), ObjectId("52816d3370c68c2c1c990500")]
                    ]
}

我需要更新" keywordsValues"字段(只是数组中的一对[])

例如更新keywordsValues中的第二个元素: 如果我们在keywordsValues字段中找到[firstId,secondId],则更新第二个secondId

$database->Measurements->update(
array('keywordsValues'=>
array(new MongoId(52816d3370c68c2c1c4b0500),new MongoId(52816d3370c68c2c1c9f0500)',$atomic'=>'true')),
array('$set'=>array('keywordsValue.$'=>new MongoId($idNewValue))));

但这不起作用......

1 个答案:

答案 0 :(得分:0)


array('$set'=>array('keywordsValue'=>new MongoId($idNewValue))));


instead of

array('$set'=>array('keywordsValue.$'=>new MongoId($idNewValue))));


我希望对你有帮助!