MySQL命令在mongodb中找到findOne()

kap*_*els 11 php mongodb

在我的mongo集合中,我有几个带时间戳的记录.我想使用findOne()并返回带有where参数的最旧记录.

如果无法使用findOne(),那就没关系.我只需要使用where参数返回最旧的记录.

如何在MongoDB中完成?

小智 13

如果您需要最早的记录,请使用

db.collection.find().sort({ created: *1* }).limit(1)
Run Code Online (Sandbox Code Playgroud)


kap*_*els 12

我不得不这样做.

$request =  $collection_requests->find( array( 'status' => 0 ) );
$request->sort( array( 'created' => 1 ) );
$request->limit(1);
$request->next();
$request = $request->current();  
Run Code Online (Sandbox Code Playgroud)

  • 用流利的方式写同样的东西:$ request = $ collection-> find(array('status'=> 0)) - > sort(array('created'=> 1)) - > limit(1) - > getNext( ); (8认同)

You*_*ung 7

你可以试试这个:

db.collection.find().sort({timestamps : -1}).limit(1);
Run Code Online (Sandbox Code Playgroud)

  • FWIW,您不必使用mongo的自动生成ID,因此不一定保证_id包含时间戳.无论如何,即使您使用mongo ID,您也只能获得插入日期.对文档的timestamps字段的更新不会更改_id字段,因此如果更新了较旧的文档,则不会返回实际的最新时间戳.SOO - 我不同意按_id字段排序是"更正确".;) (3认同)