-1

こんにちは、次のように、画像オブジェクトにクライアントの配列があります。

{
        id: 1,
        path: "2013-02/12", 
        clients:
        [
            {
                    id: 321,
                    alias: "Test: audienceDev",
            }
        ],
},

クライアント オブジェクトは別の場所で更新されています。この画像オブジェクトのクライアント オブジェクトを更新する必要があります。

私が試してみました:

            $this->mongoDB->Image->update(
                array('clients.id' => (int) $document->id),
                array('$set' => array('client' => $document)),
                array('multiple' => true)
            );

            $this->mongoDB->Image->update(
                array('clients[].id' => (int) $document->id),
                array('$set' => array('client' => $document)),
                array('multiple' => true)
            );

どちらも画像オブジェクトのクライアント オブジェクトを更新しません。

助言がありますか?

4

2 に答える 2

1

クライアントの配列があることは理解しています。すべてのクライアント オブジェクトを更新するには、次のようにする必要があります。

$this->mongoDB->Image->update(
  array('clients.id' => (int) $document->id),
  array('$set' => array('clients.$' => $document)),
  array('multiple' => true)
);

これにより、その '$document->id' を持つすべてのクライアントが検索され、'clients' 配列のすべてのクライアント (.$) が更新されます。

于 2013-02-27T14:39:01.770 に答える
0
array('$set' => array('client' => $document))

クライアントフィールドとは何ですか?あなたはそれをしていません。

オブジェクトのリストを更新するには、リスト全体を置き換える必要があります。または、新しいエントリをプッシュして古いエントリをプルします。clients.id基準でドキュメントを検索しようとすると、クライアントリストだけでなく、ドキュメントのリストが表示されるためです。また、必要に応じて更新用のjs関数を作成できます。そしてそれをmongodbに保存します。

于 2013-02-26T18:08:38.317 に答える