Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mongodb嵌入式更新对象_Php_Mongodb - Fatal编程技术网

Php mongodb嵌入式更新对象

Php mongodb嵌入式更新对象,php,mongodb,Php,Mongodb,我有这样的结构: { "_id": NumberInt(101), "link_id": { "125": { "thumb_position": NumberInt(1), "last_scan": NumberInt(1234563645), "row_numb": NumberInt(301), "clicks": NumberInt(120) }, "126": { "thumb_position": NumberInt(2), "las

我有这样的结构:

{
 "_id": NumberInt(101),
 "link_id": {
 "125": {
   "thumb_position": NumberInt(1),
   "last_scan": NumberInt(1234563645),
   "row_numb": NumberInt(301),
   "clicks": NumberInt(120)
   },
 "126": {
   "thumb_position": NumberInt(2),
   "last_scan": NumberInt(-2147483648),
   "row_numb": NumberInt(1301),
   "clicks": NumberInt(199)
     },
    {
    ...
    }
}
}   
我想用新的LinkId更新文档并获取:

{
"_id": NumberInt(101),
"link_id": {
  "125": {
   "thumb_position": NumberInt(1),
   "last_scan": NumberInt(1234563645),
   "row_numb": NumberInt(301),
   "clicks": NumberInt(120)
},
 "126": {
   "thumb_position": NumberInt(2),
   "last_scan": NumberInt(-2147483648),
   "row_numb": NumberInt(1301),
   "clicks": NumberInt(199)
},
 "127": {
   "thumb_position": NumberInt(1),
   "last_scan": NumberInt(-2147483628),
   "row_numb": NumberInt(1304),
   "clicks": NumberInt(195)
}
}
我尝试过php:

$value = array (
'130' => 
array (
  'thumb_position' => 1,
  'last_scan' => 1234563640,
  'row_numb' => 300,
  'clicks' => 120,
));
$update_status = $collection->update( array('_id'=>intval(101)), array('$set' => array('link_id' => $value)) , array("upsert"=>true ,"multiple"=> true , "safe"=> true) );
但这只是用130覆盖链接ID


嵌入式aproach。。。既然这不是一个数组,而是一个对象,你知道如何解决这个问题吗?Thx很多。

请尝试以下代码:

$value = array (
    'thumb_position' => 1,
    'last_scan' => 1234563640,
    'row_numb' => 300,
    'clicks' => 120,
);

$update_status = $collection->update(
    array('_id'=>intval(101)),
    array('$set' => array('link_id.130' => $value)),
    array("upsert"=>true ,"multiple"=> true , "safe"=> true)
);

如果您使用数组('$set'=>array('link_id.130'=>$value['130']),会发生什么情况?答案是thx@nutlike。我试着这样做,结果是:
code
{“\u id”:numberprint(100),“link\u id”:{“129”:{“拇指位置”:numberprint(1),“最后一次扫描”:numberprint(1234563649),“行数”:numberprint(309),“点击”:numberprint(129)},“130”:null}值是:
code
value\u=array('thumb_position'=>1,'last_scan'=>1234563641,'row_numb'=>301,'clicks'=>121,);因此它添加了一个空入口。我猜是这样的。Thx再次出现。它现在工作了..就像你说的那样…不使用'code'$value\u i=数组('thumb_position'=>1,'last_scan'=>1234563641,'row_numb'=>301,'clicks'=>121,);但是'code'$value['130']..没有区别…thx很多!删除其中一个嵌入条目将是:
code
update\u status=$collection->update(数组('u id'=>intval(100),'link\u id'=>133),数组('$set'=>array('link\u id.133'=>null)),数组(“upert”=>true,“multiple”=>true,“safe”=>true))在这种情况下,您应该使用$unset。