[英]How to convert date format in nodejs using mongoose
我有一個這樣的文件
{
"_id": "5c2326cb5d558f6693577119",
"date": "08/02/16 00:00",
"symbol": "WLTW",
"open": "113.300003",
"close": 111.160004,
"low": 110.459999,
"high": 113.300003,
"volume": 1200500,
"createdAt": "2018-12-26T06:59:23.901Z",
"updatedAt": "2018-12-26T06:59:23.901Z"
}
我正在做這樣的查詢
const getStockBySymbol = (data) => {
console.log('Hitting Stock Model fine!!')
return Stock.find({symbol: data})
.then((stocks) => {
console.log(stocks)
if (stocks) { return stocks }
})
}
我需要將date
格式轉換為date
Year-month-date
格式
所以當前格式是date
屬性中的dd\\mm\\yy
我想將其轉換為yyyy-mm-dd
如果有人可以提供幫助,我是 MongoDB 的新手會很棒
謝謝
您需要在獲取數據后映射結果:
const getStockBySymbol = (data) => {
return Stock.find({symbol: data})
.then((stocks) => {
if (stocks) {
var newStocks=stocks.map(function(stock){
let formattedDate=moment(stock.date,"dd/mm/YY hh:mm").format("YYYY-mm-dd");
stock.date=formattedDate;
return stock;
});
return newStocks;
}
})
}
您最好的選擇是使用 momentjs 庫。 這是時間格式轉換的簡單解決方案:
moment(new Date(date)).format('YYYY-MM-DD');
這應該產生'2016-08-02'。
您可以使用$dateFromString運算符將字符串解析為 ISODate 。 問題是年份的所有格式都需要四位數,因此它會將您的年份解析為0016
而不是預期的2016
。 要解決此問題,您可以使用$dateToParts和$dateFromParts並手動添加2000
。 然后您可以使用$dateToString將其轉換為您的格式,請嘗試:
Stockdb.aggregate([
{
$match: { symbol: "WLTW" }
},
{
$addFields: {
date: {
$dateToParts: {
date: { $dateFromString: { dateString: "$date", format: "%d/%m/%Y %H:%M" } }
}
}
}
},
{
$addFields: {
date: {
$dateToString: {
date: {
$dateFromParts: {
day: "$date.day",
month: "$date.month",
year: { $add: [ 2000, "$date.year" ] }
}
},
format: "%Y-%m-%d"
}
}
}
}
])
$addFields在這種情況下覆蓋現有字段
編輯:對於較低的 MongoDB 版本,假設您的date
具有固定長度,您可以使用$substr和$concat運算符:
Stockdb.aggregate([
{
$match: { symbol: "WLTW" }
},
{
$addFields: {
date: {
$concat: [
'20',
{ $substr: [ "$date", 6, 2 ] },
'-',
{ $substr: [ "$date", 3, 2 ] },
'-',
{ $substr: [ "$date", 0, 2 ] },
]
}
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.