0

我在 MongoDB 中有一个包含不同文件的集合。每个文件都包含一个文件名和一个版本号。如何找到每个文件的最新版本?

文件如下所示:

_id: ObjectId("51834f42ddf4010a00000000"),
f: "test.php",
v: 1,
code: "PD8NCg0KZWNobyAnR3V0ZW4gVGFnISc7DQoNCj8+"

f = 文件名,v = 版本号,(代码 = 文件内容)

假设有一个文件test.php名为second_test.php. 我想选择每个文件版本号最高的文档。

非常感谢任何帮助。

4

2 回答 2

0

如果您知道文件名,那么您可以像@gtsouk 显示的那样进行简单的查找,但是,如果您不知道文件名,则可以使用聚合框架:

$db->files->aggregate(array(
    array('$sort'=>array('v'=>-1)),
    array('$group' => array('_id'=>'$f', 'f_id' => array('$first'=>'$id'), 
          'v'=>array('$first'=>'$v')))    
));

它将根据文件的最新版本对集合进行分组。

于 2013-05-03T07:33:52.673 回答
0
db.files.find("f" => "test.php").sort({"v" => -1}).limit(1).first()
db.files.find("f" => "second_test.php").sort({"v" => -1}).limit(1).first()
于 2013-05-03T06:45:27.017 回答