对数组中最后一项的Mongoose查询

对数组中最后一项的Mongoose查询,mongoose,Mongoose,我想构造一个Mongoose查询来查询嵌套在数组中的字段。集合中的每个文档可能有不同长度的数组,我只想查询每个数组中的最后一个条目 以下是我的文档结构: User: -- authData -- [] --username --value i.e, UserSchema = new Schema({ authData: [{ username: { value: String } }] }) 以下是我到目前为止的

我想构造一个Mongoose查询来查询嵌套在数组中的字段。集合中的每个文档可能有不同长度的数组,我只想查询每个数组中的最后一个条目

以下是我的文档结构:

User:
-- authData
   -- []
      --username
         --value
i.e, 

UserSchema = new Schema({
  authData: [{
    username: {
       value: String
    }
  }]
})


以下是我到目前为止的一些非常幼稚的方法。第一个未编译,最后一个出现运行时错误(“无法读取未定义的属性“username”) :


你知道如何正确构造查询吗?谢谢大家!

错过了之前显而易见的事情。答案是:

     UserObj.find({}, function(err, docs){
         let result = docs.filter(doc =>
             doc['authData'].filter((itm,idx,arr)=>{
                 arr[arr.length-1].username.value === 'john'
     }));
或更优雅/完整的版本:

            let result = docs.
                map(doc=>doc['authData'].pop()).
                filter(auth => 
                         auth.username.value === req.query.username).
                map(itm=>itm.username.value);    
                res.json(JSON.stringify(result));   
                })

arr[arr.length-1]应该是这样的不?而不是“arr[itm.length-1]”
            let result = docs.
                map(doc=>doc['authData'].pop()).
                filter(auth => 
                         auth.username.value === req.query.username).
                map(itm=>itm.username.value);    
                res.json(JSON.stringify(result));   
                })