在 find() mongoDB/mongoose 查询结果中格式化日期?
Formatting date in find() mongoDB/mongoose query result?
我的 MongoDB 集合有一个 ISODate 字段,我想将结果格式化为 dd/mm/yyyy。
我的模特:
const Pedido = new Schema({
id: {
type: String,
required: true
},
cliente: {
type: Schema.Types.ObjectId,
ref: 'clientes',
required: true
},
date: {
type:Date
}
})
mongoose.model('pedidos',Pedido)
这就是查询和呈现:
var query = await Pedido.find().populate('cliente').lean().exec()
res.render("admin/pedidos",{pedidos: query})
我正在使用 车把
{{#each pedidos}}
<h5 class="ordem1">Pedido #{{id}} <small>{{date}}</small></h5>
{{/each}}
显示的结果是这样的:
2020 年 4 月 8 日,星期三 21:00:00 GMT-0300 (GMT-03:00)
但我想显示:08/04/2020
有人可以帮我解决这个问题吗?谢谢!!
我们可以使用$dateToString
运算符来格式化日期,勾选mongoDb Docs
如您所见,我们只能在聚合管道中使用此 $dateToString
运算符,在 $project 步骤
这是 mongo playground mongoplayground
中的一个简单示例
在您的示例中,我们可以执行相同的过程,但使用 $lookup
而不是 populate
查询可能是这样的
Pedido.aggregate([
{
$match: {} // add your search here
},
{
$lookup: { // this is the alternative to the populate
from: 'clientes',
localField: 'cliente',
foreignField: '_id',
as: 'clientes'
}
},
{
$project: { // add all the fields you need from the collection, if you need to omit something from the query results, just don't mention it here
id: 1,
clientes: 1,
date: { $dateToString: { format: "%d/%m/%Y", date: "$date" } } // this will return the date in the format "dd/MM/yyyy"
}
}
])
我的 MongoDB 集合有一个 ISODate 字段,我想将结果格式化为 dd/mm/yyyy。
我的模特:
const Pedido = new Schema({
id: {
type: String,
required: true
},
cliente: {
type: Schema.Types.ObjectId,
ref: 'clientes',
required: true
},
date: {
type:Date
}
})
mongoose.model('pedidos',Pedido)
这就是查询和呈现:
var query = await Pedido.find().populate('cliente').lean().exec()
res.render("admin/pedidos",{pedidos: query})
我正在使用 车把
{{#each pedidos}}
<h5 class="ordem1">Pedido #{{id}} <small>{{date}}</small></h5>
{{/each}}
显示的结果是这样的:
2020 年 4 月 8 日,星期三 21:00:00 GMT-0300 (GMT-03:00)
但我想显示:08/04/2020
有人可以帮我解决这个问题吗?谢谢!!
我们可以使用$dateToString
运算符来格式化日期,勾选mongoDb Docs
如您所见,我们只能在聚合管道中使用此 $dateToString
运算符,在 $project 步骤
这是 mongo playground mongoplayground
中的一个简单示例在您的示例中,我们可以执行相同的过程,但使用 $lookup
而不是 populate
查询可能是这样的
Pedido.aggregate([
{
$match: {} // add your search here
},
{
$lookup: { // this is the alternative to the populate
from: 'clientes',
localField: 'cliente',
foreignField: '_id',
as: 'clientes'
}
},
{
$project: { // add all the fields you need from the collection, if you need to omit something from the query results, just don't mention it here
id: 1,
clientes: 1,
date: { $dateToString: { format: "%d/%m/%Y", date: "$date" } } // this will return the date in the format "dd/MM/yyyy"
}
}
])