我在 MongoDB 中有以下结构(是一个示例结构):
Array
(
[_id] => MongoId Object
(
[$id] => 4e465de048177e8105000003
)
[id_usuario] => MongoId Object
(
[$id] => 4e43b20648177e5305000000
)
[mensaje] => lero lero si?
[created_at] => MongoDate Object
(
[sec] => 1313234400
[usec] => 160000
)
[comentarios] => Array
(
[0] => Array
(
[comentario] => hola mundo
[usuario] => [_id] => MongoId Object
(
[$id] => 4e465de048177e8105000003
)
[created_at] => MongoDate Object
(
[sec] => 1313234400
[usec] => 160000
)
)
[1] => Array
(
[comentario] => hola mundo
[usuario] => [_id] => MongoId Object
(
[$id] => 4e465de048177e8105000003
)
[created_at] => MongoDate Object
(
[sec] => 1313234400
[usec] => 160000
)
)
)
)
我想获得按 created_at 降序排序的最后 10 条评论,我写了以下内容:
$db->usuarios->find()->sort(array('created_at' => -1))->limit(10)->skip(0);
(这是驱动 MongoDB 的 PHP 代码)
谁能帮我做同样的事情,但同时显示按 created_at 排序的最后 3 条评论?
这在单个查询中可能吗?你能帮忙写代码吗?
最佳答案
我不太了解 php,无法理解您描述的文档结构。所以我假设 comment
文档“嵌入”在您的 usuario
文档中。
如果为真,则您不能直接处理comment
文档。您将首先获取一个 usuario
文档。有了它,您将获得一组 comment
文档,您必须在客户端对这些文档进行排序和过滤。
或者,如果您的评论对象以特定顺序存储,您可以使用 $slice 来获取前 3 个或前 10 个或任何此类子集。更多信息:http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-RetrievingaSubrangeofArrayElements
关于php - 排序 MongoDB 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7054032/