1

次の構造のテーブルがmongoにあります。

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

誰もが理由を知っていますか?

4

2 に答える 2

1

私はそれが原因であると推測しています:

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

ドキュメントにはありませPinnedんが、間違いなく配列ではありません。

それは本質的にこのエラーが言うことです:Pinnedは配列ではありません.

于 2013-02-18T08:28:48.190 に答える
-1

一重引用符('')を使用しました。PHPは、一重引用符で囲まれた変数を無視します。一重引用符を削除するか、二重引用符に置き換える必要があります。

これは機能するはずです:

$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('Pinned' => null)), array('safe' => true)); 
于 2013-02-18T08:26:12.640 に答える