不成功的$重命名mongodb中的字段

时间:2014-06-26 10:43:45

标签: mongodb

我正在使用MongoDB shell版本:2.6.3,并尝试重命名shell中的字段。

这是确切的命令:

db.deals.update({},{$rename:{'deal':'object'}},{multi:true})

它返回:

WriteResult({ "nMatched" : 18, "nUpserted" : 0, "nModified" : 0 })

看起来很好,但实际上命令后收集结构仍然完好无损。

1 个答案:

答案 0 :(得分:2)

我的猜测是你试图多次执行$rename。匹配{}的空查询 - 要更新的第一个参数将匹配集合中的所有文档(获取nMatched=18的原因)。但是,您收到nModified:0,因为没有包含deal字段的文档。请参阅以下示例:

> db.deals.remove({})
WriteResult({ "nRemoved" : 1 })
> db.deals.insert({"deal":"test"})
WriteResult({ "nInserted" : 1 })
> db.deals.find()
{ "_id" : ObjectId("53abfc1277e9b67082836948"), "deal" : "test" }
> db.deals.update({},{$rename:{'deal':'object'}},{multi:true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.deals.find()
{ "_id" : ObjectId("53abfc1277e9b67082836948"), "object" : "test" }
>

您可以轻松检查是否包含deal的任何文件:

db.deals.find({'deal':{$exists:true}})