只获取MongoDB中的不同条目

时间:2013-05-03 06:10:33

标签: php mongodb

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

文件如下:

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

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

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分: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')))    
));

将集合放在最新版本的文件中。