我试图查看在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元素,似乎我可以弹出该阵列而不是保存。但我无法弄清楚这在某种程度上是不是很糟糕。我会更专注于专用的偷看功能,但无法找到一个。
或者,我可以添加另一个始终具有最新电池状态的字段。会更好吗?
答案 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
})