如何在 MongoDB 中聚合 $slice 以从嵌套数组中获取精确位置的元素?

mongodbdatabasebig data analytics更新于 2026/1/13 13:52:17

您可以使用聚合框架来实现此目的。首先,我们创建一个包含文档的集合 −

>db.exactPositionDemo.insertOne({"StudentName":"John","StudentScores":[78,98,56,45,89]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd29a1c345990cee87fd883")
}

以下查询借助 find() 方法显示集合中的所有文档 −

> db.exactPositionDemo.find().pretty();

这将产生以下输出 −

{
   "_id" : ObjectId("5cd29a1c345990cee87fd883"),
   "StudentName" : "John",
   "StudentScores" : [
      78,
      98,
      56,
      45,
      89
   ]
}

案例 1 − 查询聚合 $slice 以获取精确位置的元素,其值为 0,1 −

> db.exactPositionDemo.aggregate([ { "$project": { "StudentScores": { "$slice": ["$StudentScores",0,1] } }} ]);

将产生以下输出 −

{ "_id" : ObjectId("5cd29a1c345990cee87fd883"), "StudentScores" : [ 78 ] }

案例 2 − 查询聚合 $slice 以获取位于精确位置且值为 1,1 的元素 −

> db.exactPositionDemo.aggregate([ { "$project": { "StudentScores": { "$slice": ["$StudentScores",1,1] } }} ]);

这将产生以下输出 −

{ "_id" : ObjectId("5cd29a1c345990cee87fd883"), "StudentScores" : [ 98 ] }

相关文章