[英]Change datatype from int64 to string in mongodb for nested array
我有一個像下面這樣的 gc 集合數組,我需要將 CardNumber 的數據類型從 int64 更改為字符串。應該對此集合中的所有記錄完成此操作。我編寫了如下腳本,但在執行時沒有發生任何轉換。任何幫助將不勝感激。
Eg: GiftCardSale[2 element]
[0] GiftCardId 62e201874a555cb001d2d723
CardNumber 5678967546738766 (Int64)
Amount 20
[1] GiftCardId 62e201874a555cb001d2d723
CardNumber 6789879874673829 (Int64)
Amount 10
db.gc
.find(
{
GiftCardSale: {
$elemMatch: {
CardNumber: { $exists: true, $type: 18 },
},
},
},
{
_id: 2,
}
)
.forEach(function (doc) {
db.gc.update(
{
_id: doc._id,
},
{
$set: {
'GiftCardSale.$[etl].CardNumber': {
$toString: '$GiftCardSale.$[etl].CardNumber',
},
},
},
{ arrayFilters: [{ 'etl.CardNumber': { $type: 18 } }], multi: true }
);
});
您可以使用單個管道update
所有文檔。
db.gc.update({
"GiftCardSale.CardNumber": {"$type": "long"}
},
[
{
"$set": {
"GiftCardSale": {
"$map": {
"input": "$GiftCardSale",
"as": "sale",
"in": {
"$cond": [
{"$eq": [{"$type": "$$sale.CardNumber"}, "long"]},
{
"$mergeObjects": [
"$$sale",
{"GiftCardSale": {"$toString": "$$sale.CardNumber"}}
]
},
"$$sale"
]
}
}
}
}
}
],
{
"multi": true
})
在mongoplayground.net上試試。
您可能想在下面詳細查看我對類似問題的回答。 在 mongodb 中將 int 數據類型更改為 string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.