2013-02-18 79 views
1

我在蒙戈结构如下表:

array(
    'Subscriber' => array(
     '0' => 'Name 1', 
     '1' => 'Name 1', 
     '2' => 'Name 2', 
    ) 
) 

我使用下面的代码从用户删除项目:

$setData["subscriber.1"]=1; 
$result = $this->mongo->pages->update($condition1, array('$unset' => $setData), array('safe' => true)); 
$result = $this->mongo->pages->update($condition1, array('$pull' => array('subscriber' => null)), array('safe' => true)); 

它工作正常,但给出Mongo cursor Error:Cannot apply $pull/$pullAll modifier to non-array

任何人都知道为什么吗?

回答

-1

您确实使用了单引号('')。 PHP会忽略单引号内的变量。您必须删除单引号或用双引号替换它们。

这应该工作:

​​
+0

这是一个mongodb问题,单引号实际上是正确的 – Sammaye 2013-02-18 08:26:41

+0

谢谢兄弟,它的工作 – user1795109 2013-02-18 08:43:57

1

我猜测,这是因为:

$result = $this->mongo->pages->update($condition1, array('$pull' => array('Pinned' => null)), array('safe' => true)); 

你有你的文档中没有Pinned,它最绝对不是一个数组。

这实质上就是这个错误所说的:Pinned不是一个数组。

+0

我对它没有固定的问题放了一点,它是订阅。我已经解决了这个问题。请再看一遍。我很抱歉。 – user1795109 2013-02-18 08:38:02

+0

@ user1795109如果上面的答案是我的工作,我会非常惊讶,这意味着你将操作数组的键设置为一个变量。 – Sammaye 2013-02-18 08:57:03