我在MongoDB中有一个包含不同文件的集合。每个文件都包含文件名和版本号。如何找到每个文件的最新内容?
文件如下:
_id: ObjectId("51834f42ddf4010a00000000"),
f: "test.php",
v: 1,
code: "PD8NCg0KZWNobyAnR3V0ZW4gVGFnISc7DQoNCj8+"
f = filename,v =版本号,(代码=文件内容)
假设有一个名为test.php
的文件和另一个名为second_test.php
的文件。我想选择具有每个文件的最高版本号的文档。
非常感谢任何帮助。
答案 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')))
));
将集合放在最新版本的文件中。