Javascript 如何查询和排序Mongoose子文档
我需要获得Javascript 如何查询和排序Mongoose子文档,javascript,mongodb,mongoose,mongodb-query,aggregation-framework,Javascript,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,我需要获得卡牌内的卡牌,该卡的统计数据最低。请查看wDate值 例如,对以下内容的查询: { "_id": "608642db80a36336946620aa", "cards": [ { "stats": { "reviewDate": "1985-03-26T04:34:17.425Z"
卡牌内的卡牌
,该卡的统计数据最低。请查看wDate
值
例如,对以下内容的查询:
{
"_id": "608642db80a36336946620aa",
"cards": [
{
"stats": {
"reviewDate": "1985-03-26T04:34:17.425Z",
},
"_id": "6086430080a36336946620ab",
"front": "front",
"back": "back"
},
{
"stats": {
"reviewDate": "2021-05-26T04:34:17.425Z",
},
"_id": "6086430080a36336946620ab",
"front": "front",
"back": "back"
},
{
"stats": {
"reviewDate": "2021-04-26T04:34:17.425Z",
},
"_id": "6086430080a36336946620ab",
"front": "front",
"back": "back"
}
]
}
应返回:
{
"stats": {
"reviewDate": "1985-03-26T04:34:17.425Z",
},
"_id": "6086430080a36336946620ab",
"front": "front",
"back": "back"
}
我试图通过按降序排列卡片并阅读列表中的第一项来实现这一点:
DeckModel.findById(req.params.deckId, 'cards')
.sort({'cards.stats.dateCreated': 'desc'})
.exec((err, docs) => {
if(err) { return next(err) }
console.log(docs.cards.[0]);
});
但是它不起作用-当然是因为我对.sort()的理解不好)
这是一个与我的问题相似的问题,尽管没有公认的答案
如何构造返回所需结果的查询
如果需要,以下是我的模式:
var DeckSchema = new Schema (
{
title: { type: String, required: true, maxlength: 255 },
cards: [CardSchema]
}
)
谢谢大家
- 酸牙
演示-
非常感谢你的回答!这确实有帮助。如果你有时间,你能看看我的电话号码吗?我真的很感激。@Sour\u Tooth done:)
var CardSchema = new Schema(
{
stats: {
reviewDate: {type: Date, default: Date.now(), required: true},
},
front: String,
back: String
}
)
db.collection.aggregate([
// { $match: { } }, your query here
{ $unwind: "$cards" },
{ $sort: { "cards.stats.dateCreated": -1 } },
{ $limit: 1 },
{ $replaceRoot: { "newRoot": "$cards" } }
])