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);

现在,它显然不起作用。我认为原因是以下两个之一:

  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 添加了评论 - UTC 时间 2013 年 1 月 3 日下午 5:26:11 作者:{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(但现在只接受负切片)。分支:master https://github.com/mongodb/mongo/commit/b3687e73545f6d0d04f1992119308e7ab80d44e1

于 2013-01-22T17:53:02.447 回答