重命名mongoDB中的字段,同时设置newValue

重命名mongoDB中的字段,同时设置newValue,mongodb,set,rename,Mongodb,Set,Rename,我想重命名MongoDB中的一个字段,然后用旧字段名设置新值:示例如下: db.exemption.update({'ref':163},{$rename: {'request.reference':'request.oldRef'},$set: {'request.reference':'00000'}},true,true) 但她知道我犯的错误 { [MongoError: Cannot update 'request.reference' and 'request.refere

我想重命名MongoDB中的一个字段,然后用旧字段名设置新值:示例如下:

 db.exemption.update({'ref':163},{$rename: 
 {'request.reference':'request.oldRef'},$set:
 {'request.reference':'00000'}},true,true) 
但她知道我犯的错误

{ [MongoError: Cannot update 'request.reference' and 'request.reference' at the same time]
  name: 'MongoError',
  code: 16837,
  err: 'Cannot update \'request.reference\' and \'request.reference\' at the same time' }
除了使用2个查询mongo外,是否有可能更新此字段

你可以这样做

 db.exemptions.update({ref: <value>}, {
     $unset: {'request.oldRef': 1},
     $set: {'request.reference': <new value>}
 });
db.exceptions.update({ref:}{
$unset:{'request.oldRef':1},
$set:{'request.reference':}
});
它实际上并没有重命名字段,但它会给出相同的结果。

您可以这样做

 db.exemptions.update({ref: <value>}, {
     $unset: {'request.oldRef': 1},
     $set: {'request.reference': <new value>}
 });
db.exceptions.update({ref:}{
$unset:{'request.oldRef':1},
$set:{'request.reference':}
});

它实际上并没有重命名字段,但它会给出相同的结果。

no,我想保留字段'request.reference'的旧值,这就是我重命名字段的原因,我想同时更改字段'request.reference'的值,'request.oldRef'不存在;这就是为什么没有必要取消设置的原因it@chou首先,你应该编辑你的问题以反映这一点。第二,你想让'request.oldRef'等于原来的'request.reference'和'request.reference'等于一个新值吗?不,我想保留'request.reference'字段的旧值,这就是我重命名该字段的原因,我想同时更改'request.reference'字段的值,'request.oldRef'不存在;这就是为什么没有必要取消设置的原因it@chou首先,你应该编辑你的问题以反映这一点。第二,您希望'request.oldRef'等于原始的'request.reference'和'request.reference'等于一个新值?一次更新操作不可能,而是两次更新操作;第一个是使用
$rename
,下一个是使用
$set
ok!!我想优化我的代码:/在同一个查询中,$unset和$rename的任何IDE?。不可能只使用一个更新操作,而是两个;第一个是使用
$rename
,下一个是使用
$set
ok!!我想优化我的代码:/同一查询中$unset和$rename的任何IDE?。