我在数据库中有一个文件如下。
{
"CorePrice" : 1,
"_id" : 166,
"partno" : 76,
"parttype" : "qpnm",
"shipping" : [{
"shippingMethod1" : "ground",
"cost1" : "10"
},
{
"shippingMethod2" : "air",
"cost2" : "11"
},
{
"shippingMethod3" : "USPS",
"cost3" : "3"
},
{
"shippingMethod4" : "USPS",
"cost4" : 45
}]
}
我正尝试使用以下代码重复将ShippingMethod4重命名为shippingMethod。
remap = function (x)
{
if (x.shipping) {
db.foo.update ({ _id:x._id},
{ $set: {
"shipping.shippingMethod","x.shipping.shippingMethod4" },
$unset:{ "shipping.shippingMethod4":1
}}); } }
但它会引发以下错误:
"Sun Oct 06 02:09:44.764 JavaScript execution failed: SyntaxError: Unexpected token ,
不确定原因。有人可以帮忙吗?
答案 0 :(得分:0)
我已经为你重写了这个功能。
rename=function(x) {
if (x.shipping) {
x.shipping[3]={
"shippingMethod" : "USPS",
"cost4" : 45
}
}
db.foo.update({_id:x._id},x)
}
这将进行您需要的更新。当然,对于一般情况,你仍然需要添加一个循环来遍历货运数组以找到你想要的名称,并保持索引像我一样使用它,但我让你作为一个练习;-)。 你可以从shell中重命名(x)来调用它。
希望这有帮助, 莫雷诺。