Mongodb:访问$project中的文档位置
如果我对聚合查询的结果进行排序,我可以访问结果中的文档位置吗?这将用于在$project内执行计算,而不是返回结果并对其进行迭代 文档位置为0、1、2等的预期结果: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: ____ }
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
阶段中没有文档位置。它不是必需的,因为您可以按顺序获得结果,并可以将其转换为数组,然后通过客户端的索引获取文档。我认为您不能完全按照自己的意愿进行操作。你能描述一下最终目标是什么吗?也许还有另一条通往最终目标的道路。