我正在使用MongoDB shell版本:2.6.3,并尝试重命名shell中的字段。
这是确切的命令:
db.deals.update({},{$rename:{'deal':'object'}},{multi:true})
它返回:
WriteResult({ "nMatched" : 18, "nUpserted" : 0, "nModified" : 0 })
看起来很好,但实际上命令后收集结构仍然完好无损。
答案 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}})