📜  MongoDB - $slice 修饰符(1)

📅  最后修改于: 2023-12-03 15:17:41.436000             🧑  作者: Mango

MongoDB - $slice 修饰符

在 MongoDB 中,$slice 修饰符用于从数组字段中选择子集。

语法

以下是 $slice 修饰符的基本语法:

{ <field>: { $slice: <num> } }
  • <field>:要选择子集的数组字段。
  • <num>:要选择的数组元素数量,可以是正数或负数。
用法

$slice 修饰符可以应用于查询操作中的投影操作符,也可以应用于更新操作中的修改器。

查询操作

考虑以下示例,假设我们有一个名为 users 的文档集合,其中包含一个字段 hobbies,它是一个字符串数组:

db.users.insertOne({
  name: "John",
  hobbies: ["reading", "coding", "music", "gaming", "cooking"]
})

现在,我们希望只检索前两个兴趣爱好。可以使用 $slice 修饰符来实现:

db.users.find({}, { hobbies: { $slice: 2 } })

这将返回以下结果:

{
  "_id": ObjectId("60ecf8244993cf4cbc2200fb"),
  "hobbies": ["reading", "coding"]
}
更新操作

在更新操作中,$slice 修饰符用于修改数组字段的元素数量。

例如,假设我们要将用户的 hobbies 数组限制为仅包含最新的三个爱好:

db.users.updateOne(
  { name: "John" },
  { $push: { hobbies: { $each: ["singing", "painting"], $slice: -3 } } }
)

在这个示例中,我们使用 $push 操作符将新的兴趣爱好添加到数组中,然后使用 $slice: -3 将数组限制为最新的三个元素。

注意事项
  • 当指定的 <num> 为正数时,$slice 修饰符将会返回从数组的开头开始的 <num> 个元素。
  • 当指定的 <num> 为负数时,$slice 修饰符将会返回从数组的末尾开始的 <num> 个元素。
  • 如果数组包含少于 <num> 个元素,则返回整个数组。
  • $slice 修饰符可以与其他投影操作符或修改器一起使用。

希望这个简介对你理解 MongoDB 中的 $slice 修饰符有所帮助!