Javascript Mongoose-like SQL具有最新日期
我试图用猫鼬找到我收集的所有数据,但我有一些问题需要理解。 现在我用Javascript Mongoose-like SQL具有最新日期,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图用猫鼬找到我收集的所有数据,但我有一些问题需要理解。 现在我用 const mongoose = require('mongoose'); const CaseSchema = new mongoose.Schema({ szenario: { type: String, default: 'deprecated' }, name: { type: String, default: 'test'
const mongoose = require('mongoose');
const CaseSchema = new mongoose.Schema({
szenario: {
type: String,
default: 'deprecated'
},
name: {
type: String,
default: 'test'
},
date: {
type: Date,
default: Date.now
}
});
const Case = mongoose.model('tests', CaseSchema);
module.exports = Case;
这个电话的想法是:
Case.find().distinct(name).exec();
但是我如何使用mongoose为最新日期选择不同的名称?要使用最新日期获得不同的名称,您需要使用运算符执行MongoDB聚合:
Case.aggregate([
{
$sort: {
name: 1,
date: 1
}
},
{
$group: {
_id: "$name",
data: {
$last: {
date: "$date",
_id: "$_id"
}
}
}
},
{
$project: {
_id: "$data._id",
date: "$data.date",
name: "$_id"
}
}
]).exec((err, cases) => {
if (err) throw err;
console.log(cases);
});
你说的最晚日期是什么意思?如果你有{姓名:foo,日期:昨天}和{姓名:foo,日期:今天},你想要什么?不同的名称是foo还是…?很抱歉,混淆了我今天在您的问题中提到的最新日期。它是否解决了您的问题:Case.find{date:{$gte:new date'2020-02-23'}}。distinctname.exec;?嗯,也许我误解了你的评论。日期我不知道,有些条目不是当前日期。比如100个不同的案例,每个案例有20个不同的日期。我希望最终只使用最新日期->最新=最新当前日期的案例。所以,第一个过滤器是名称不同,第二个过滤器是日期。非常感谢。我可以确认这项工作,但我陷入了无法获得参考案例的_id的问题。这个列表很完美,但是以后如何处理列表中的元素呢?为此,我需要箱子的唯一id。如何在console.log中获取此信息?@ingo请再次检查。哦,是的,现在我明白了。有时候,有些台词比千言万语更能解释它。非常感谢。