mongoose偷看阵列中的第一个文件

时间:2017-10-08 20:04:11

标签: arrays mongodb mongoose

我试图查看在mongoose中保存的数组中的第一个元素。让我们说它看起来像这样:

var batterySchema = mongoose.Schema({ percent: Number, minutes: Number, time: Date, }) var robotSchema = mongoose.Schema({ name: String, battery_life: [batterySchema], }); 而且我将不断添加元素到使用unshift的特定机器人的battery_life文档。

现在,如果我想在任何时候能够获取最新的battery_life元素,似乎我可以弹出该阵列而不是保存。但我无法弄清楚这在某种程度上是不是很糟糕。我会更专注于专用的偷看功能,但无法找到一个。

或者,我可以添加另一个始终具有最新电池状态的字段。会更好吗?

1 个答案:

答案 0 :(得分:0)

您可以使用投影仅投影第一个数组元素。

假设您的Mongoose模型是机器人,这应该有效:

Robot.find({}, { "battery_life.0": 1 }, function(err, docs) {
  // Callback code
})

这将只返回 _id 字段(默认返回)以及匹配文档的 battery_life 数组中的第一项。

如果你只需要数组中的最后一项,那么这应该可以改为:

Robot.find({}, { "battery_life": { $slice: -1 } }, function(err, docs) {
  // Callback code
})