Mongodb:访问$project中的文档位置

Mongodb:访问$project中的文档位置,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,如果我对聚合查询的结果进行排序,我可以访问结果中的文档位置吗?这将用于在$project内执行计算,而不是返回结果并对其进行迭代 文档位置为0、1、2等的预期结果: db.trips.aggregate([ { $match: { driver: "xx" } }, { $sort: { "start.time": -1 } }, { $project: { _id: 1, driver: 1 document_position: ____ }

如果我对聚合查询的结果进行排序,我可以访问结果中的文档位置吗?这将用于在$project内执行计算,而不是返回结果并对其进行迭代

文档位置为0、1、2等的预期结果:

db.trips.aggregate([
  { $match: { driver: "xx" } },
  { $sort: {  "start.time": -1 } },
  { $project: {
     _id: 1,
     driver: 1
     document_position: ____ 
  } }
])
您需要的是和管道阶段。使用它们只能获得一系列记录,而不能从不连续的索引中选取记录

var fromindex = 1;  // define the index from which you want to pick the documents.
                    // Assuming index starts from 0.
var numberOfDocuments = 3; // The number of documents from the position.

db.trips.aggregate([
{$match:{"driver": "xx"}},
{$sort:{"start.time": -1}},
{$skip:fromindex-1},
{$limit:numberOfDocuments},
{ $project: {
     _id: 1,
     driver: 1
}
])
这将按排序顺序返回位置1、2、3处的文档


如果您看到,
$project
阶段中没有文档位置。它不是必需的,因为您可以按顺序获得结果,并可以将其转换为数组,然后通过客户端的索引获取文档。

我认为您不能完全按照自己的意愿进行操作。你能描述一下最终目标是什么吗?也许还有另一条通往最终目标的道路。