我想构造一个Mongoose查询来查询嵌套在数组中的字段。集合中的每个文档可能有一个不同长度的数组,我只想查询每个数组中的最后一个条目。
下面是我的文档结构:
User:
-- authData
-- []
--username
--value
i.e,
UserSchema = new Schema({
authData: [{
username: {
value: String
}
}]
})
以下是我迄今为止的一些非常天真的方法。第一个不能编译,最后一个得到运行时错误(“Cannot read property 'username' of undefined”):
Approach 1:
UserObj.find({authData[authData.length].username.value: 'john'}, function(err, docs){});
Approach 2:
UserObj.find({}, function(err, docs){
docs.filter(doc =>
doc['authData'].filter((itm,idx,arr)=>{
arr[itm.length-1].username.value === 'john'
}));
. . .
如何正确地构造查询?
1条答案
按热度按时间yqkkidmi1#
以前错过了一些明显的东西。答案是:
或者稍微更优雅/完整的版本: