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