返回数组中x个元素的MongoDB请求?

返回数组中x个元素的MongoDB请求?,mongodb,mongoose,Mongodb,Mongoose,我在javascript中使用mongoose,但我希望使用纯MongoDB或mongoose 假设我们的数据库中有一个如下所示的模式: { attr1: String, attr2: Number, arr: [String] } 此模式的对象在数组中可能有数百个元素,但我希望MongoDB只返回数组中最近(最后)的5个元素 更明确的例子: 数据库中的对象: { attr1: "test", attr2: 4, arr: [ "test1", "test2", "te

我在javascript中使用mongoose,但我希望使用纯MongoDB或mongoose

假设我们的数据库中有一个如下所示的模式:

{
  attr1: String,
  attr2: Number,
  arr: [String]
}
此模式的对象在数组中可能有数百个元素,但我希望MongoDB只返回数组中最近(最后)的5个元素

更明确的例子:

数据库中的对象:

{
  attr1: "test",
  attr2: 4,
  arr: [ "test1", "test2", "test3", "test4", "test5", "test6", "test7" ]
}
我希望MongoDB返回的对象:

{
  attr1: "test",
  attr2: 4,
  arr: [ "test3", "test4", "test5", "test6", "test7" ]
}
可以使用“投影”操作符执行此操作:

db.test.find({}, {arr: {$slice: -5}})
输出:

{ "_id" : ..., 
  "attr1" : "test", 
  "attr2" : 4, 
  "arr" : [ "test3", "test4", "test5", "test6", "test7" ]
}

传递一个负值将从数组中获取最后N个元素。

Wow,我有一半希望这是不可能的。这正是我想要的!谢谢