我正在嘗試向我的集合中的所有檔案添加一個新欄位。
新欄位應該是表單的連接doc.name "_" doc.created
我寫了以下代碼 -
db.test.find({}).forEach(function(doc) {
doc.externalId= doc.name "_" { "$dateToString": { "format": "%Y-%m-%d %H-%M", "date": doc.created } }
db.test.save(doc);
})
結果是——
{
"_id" : ObjectId("621b63bec07bb9761216d08a"),
"name" : "test1",
"created" : ISODate("2021-07-12T08:22:16.688 0000"),
"externalId" : "test1_[object Object]"
}
{
"_id" : ObjectId("621b63bec07bb9761216d08b"),
"name" : "test2",
"created" : ISODate("2021-08-12T08:22:16.688 0000"),
"externalId" : "test2_[object Object]"
}
{
"_id" : ObjectId("621b63bec07bb9761216d08c"),
"name" : "test3",
"created" : ISODate("2021-09-12T08:22:16.688 0000"),
"externalId" : "test3_[object Object]"
}
我嘗試簡單地與現有的創建日期連接,但我無法控制回傳日期的格式 -
db.test.find({}).forEach(function(doc) {
doc.externalId= doc.name "_" doc.created;
db.test.save(doc);
})
輸出 -
{
"_id" : ObjectId("621b6413c07bb9761216d08d"),
"name" : "test1",
"created" : ISODate("2021-07-12T08:22:16.688 0000"),
"externalId" : "test1_Mon Jul 12 2021 11:22:16 GMT 0300 (Jerusalem Daylight Time)"
}
{
"_id" : ObjectId("621b6413c07bb9761216d08e"),
"name" : "test2",
"created" : ISODate("2021-08-12T08:22:16.688 0000"),
"externalId" : "test2_Thu Aug 12 2021 11:22:16 GMT 0300 (Jerusalem Daylight Time)"
}
{
"_id" : ObjectId("621b6413c07bb9761216d08f"),
"name" : "test3",
"created" : ISODate("2021-09-12T08:22:16.688 0000"),
"externalId" : "test3_Sun Sep 12 2021 11:22:16 GMT 0300 (Jerusalem Daylight Time)"
}
如何獲取該物件的字串值?我希望它回傳類似 ISODate 的東西——2021-07-12T08:22:16.688甚至是它當前回傳的內容,只是沒有 GTM 時間—— Sun Sep 12 2021 11:22:16(沒有GMT 0300 (Jerusalem Daylight Time)后綴)
謝謝
編輯:
Mongo 版本 3.4.19
uj5u.com熱心網友回復:
將externalId邏輯移動為投影。
db.test.find({},
{
name: 1,
created: 1,
externalId: {
$concat: [
"$name",
"_",
{
"$dateToString": {
"format": "%Y-%m-%dT%H:%M:%S.%L",
"date": "$created"
}
}
]
}
})
.forEach(...)
示例 Mongo Playground
另一種方法是使用toISOString方法;
db.test.find({}).forEach(function(doc) {
let created = doc.created.toISOString().split('Z')[0];
doc.externalId= doc.name "_" created;
db.test.save(doc);
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/433609.html
下一篇:MongoDB-帶條件的求和聚合
