2012-07-15 73 views
2
$collection->update(array("_id"=>new MongoId($uid), "phonenumber"=> $exist => array(FALSE),$set("phone"=>"1223444")); 

我想知道为什么我的$存在的查询未与PHP的工作,和MongoDB如果任何人都可以在这将是有益的指向正确的方向我。

好的在收集数据库中没有称为phonenumber的行,如果没有phonenumber我想它插入一个,但如果有phonenumber不做任何事情。

+0

显然你在代码中有语法错误上面太多。然而,目前还不清楚你想在这里捕捉什么逻辑。你能更具体地了解你想要查询/更新的内容吗? – 2012-07-16 17:47:05

+0

@RussellHarrower你为什么标记错误的答案是正确的? oliviercuyp是正确的 – demonking 2014-12-11 15:12:50

回答

8

你有几个语法问题。

  1. 你在第二个层次丢失阵列
  2. 你的运营商需要他们周围的单引号($exist

这里是一个清理样品:

$collection->update(
    array("_id"=> new MongoId($uid), 
      array("phonenumber"=> array('$exists' => false)) 
     ), 
    array('$set' => array("phone"=>"1223444")) 
); 
+0

它似乎不工作,不知道为什么 – RussellHarrower 2012-07-15 04:42:35

+0

我可以说是在mongodb集合没有一行atm与phonenumber,我想添加它时,他们输入它。 – RussellHarrower 2012-07-15 04:44:37

+0

@RussellHarrower如果你正在更新一个特定的文件(如'_id'所标识的),并且没有'phonenumber'字段,那么请继续前进,然后'$ set'。除非您试图避免覆盖已设置的值,否则“$存在”检查是不必要的。 – Stennie 2012-07-15 07:17:49

0

尝试这样做不等于运营商

$collection->update(
    array("_id"=> new MongoId($uid)), 
    array('$set' => array("phone"=>"1223444")) 
); 
+0

不幸的是,这不工作。它不会插入任何东西到db – RussellHarrower 2012-07-15 04:49:55

+0

@RussellHarrower:如果没有在mongo数组中有phonenumber的行,那么为什么你检查字段是否存在? – 2012-07-15 04:54:54

+0

没有行@jusnit – RussellHarrower 2012-07-15 05:02:45

3

这应该是:

$collection->update(
    array( 
     "_id"   => new MongoId($uid), 
     "phonenumber" => array('$exists' => false) 
    ), 
    array('$set' => array("phone"=>"1223444")) 
); 

有一个阵列级的响应盖茨VP