我有一个类似以下的收藏
<table className={classes.table}>
<thead>
<tr>
<td></td>
{
sit.sit.map((sit) => (<td className={classes.sitCell} align='center' key={sit}>{sit}</td>))
}
</tr>
</thead>
<tbody>
{
sit.row.map(row => (
<tr key={row}>
<td className={classes.rowCell} align='left'>{row}</td>
{
sit.sit.map((sit, index) => (<td className={classes.sit} key={index}><MenuItem id={index} onClick={handleSitClick} disabled={selected} className={classes.sit}></MenuItem></td>))
}
</tr>
))
}
</tbody>
</table>
答案 0 :(得分:1)
您需要先将日期转换为ISODate
。
您可以$concat
使用以下moment
格式。
db.collection.aggregate([
{
$project: {
date: {
$dateFromString: {
dateString: { $concat: [moment().format("YYYY-MM-DDT"), "$str"] },
timezone: "Asia/Kolkata"
}
}
}
}
])
答案 1 :(得分:1)
您可以尝试下面的查询,其中$$NOW将返回当前日期时间值:
db.collection.aggregate([
{
$addFields: {
date: {
$dateFromParts: {
year: { $year: "$$NOW" },
month: { $month: "$$NOW" },
day: { $dayOfMonth: "$$NOW" },
hour: { $toInt: { $substrBytes: ["$str", 0, 2] } },
minute: { $toInt: { $substrBytes: ["$str", 3, 2] } },
second: { $toInt: { $substrBytes: ["$str", 6, 2] } },
timezone: "Asia/Kolkata",
}
}
}
}
])
测试: mongoplayground
更新:
db.collection.aggregate([
{
$addFields: {
date: {
$dateFromString: {
dateString: {
$concat: [
{
$dateToString: {
format: "%Y-%m-%d",
date: "$$NOW",
timezone: "Asia/Kolkata"
}
},
"T",
"$str"
]
},
timezone: "Asia/Kolkata"
}
}
}
}
])
测试: mongoplayground
答案 2 :(得分:0)
就像@Ashh发布的上述解决方案
我更喜欢另一种解决问题的方法,而无需使用时间依赖性
db.collection.aggregate([
{
$addFields: {
date: new Date()
}
},
{
$addFields: {
date: {
$dateToString: {
date: "$date",
format: "%Y-%m-%d",
timezone: "Asia/Kolkata"
}
}
}
},
{
$addFields: {
date: {
$dateFromString: {
dateString: {
$concat: [
"$date",
"T",
"$str",
]
},
timezone: "Asia/Kolkata"
}
}
}
}
])