0

そのため、mongoの最新の(不安定な)バージョンで、次のように実装されたようです。

https://jira.mongodb.org/browse/SERVER-991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

PHPで動作させようとしていますが、動作しません。使ってます:

    $newData = array(
        '$push' => array(
            "$array" => $obj,
            '$size' => 10
        )
    );
    $collection->update(array("_id" => new MongoId("$IDIn")), $newData);

今、それは明らかに機能していません。理由は次の2つのうちの1つだと思います。

  1. PHPドライバー(1.3.2)はまだこの機能をサポートしていませんが、サーバーで定義された関数を使用しているだけなので、疑わしいです。
  2. コマンドは$size:$ integerではありませんが、その場合、その説明はどこにも見つかりません。

誰かがすでにこの問題を抱えていましたか?

前もって感謝します。

4

1 に答える 1

0

この機能の使用例は、JIRA ( https://github.com/mongodb/mongo/commit/b3687e73545f6d0d04f1992119308e7ab80d44e1 ) から参照できます。

これは特に興味深いものです:

t.update( {_id:1}, { $push: { x: { $each: [ {a:3} ], $slice:-5, $sort: {a:1} } } } )

そのページのさらに下に、コードが文書化されています。

// If we're in the "push all" case with slice, we have to decide how much of each
// of the existing and parameter arrays to copy to the final object.

これらの種類のナゲットは、次のような JIRA の下部にあります。

auto がコメントを追加しました - Jan 03 2013 05:26:11 PM UTC Author:{u'date': u'2013-01-03T17:19:13Z', u'name': u'Alberto Lerner', u'email ': u'alerner@10gen.com'} メッセージ: SERVER-991 SERVER-8008 $trimTo を $slice に置き換えました (ただし、現時点では負のスライスのみを受け入れます)。ブランチ: マスター https://github.com/mongodb/mongo/commit/b3687e73545f6d0d04f1992119308e7ab80d44e1

于 2013-01-22T17:53:02.447 に答える