具有以下结构的数据库:
ng build --base-href ./ --prod
我需要将“中标”的值从“ 1.950”更改为“ 1950”。 可能有很多含义,可能有所不同,因此 $ replaceOne()不适合。 有人可以帮忙吗?
答案 0 :(得分:1)
继续从您的last post中获得答案。
我认为您可以在$project
阶段的$out
阶段使用$split和$reduce,将管道中所有此类事件转换为管道的最后阶段。
这个想法是用split
和"."
的字符串concat
返回数组以形成一个字符串,但是没有"."
,然后您可以继续普通过程。
由于超时,您收到错误$out failed: { ok: 0.0, errmsg: "operation exceeded time limit", code: 50, codeName: "MaxTimeMSExpired" }
,可以使用$maxTimeMS
db.collection_name.aggregate([
{
$project: {
category : "$category",
category_name : "$category_name",
lot_title : "$lot_title",
seller_name : "$seller_name",
seller_country : "$seller_country",
bid_count : "$bid_count",
winning_bid : {
$toInt : {
$substr : [
{
$reduce : {
input : { $split : ["$winning_bid","."]}},
initialValue: "",
in: { $concat : ["$$value", "$$this"] }
}
},
2,
-1
]
}
},
bid_amount : "$bid_amount",
lot_image : "$lot_image"
}
},{
$out : "collection_name"
}
]).maxTimeMS(100)
您可以根据需要增加超时时间。
我还没有测试过代码,它在理论上应该可以工作,但是您知道了,可以根据需要更改代码。