我有一个像这样的文件:
{
"_id" : ObjectId("5705fe62d0d50b2316617508"),
"date" : ISODate("2016-04-07T11:12:43.917Z"),
}
{
"_id" : ObjectId("5705fe62d0d50b2316617508"),
"date" : ISODate("2016-04-07T11:12:43.917Z"),
"XString" : "bb"
}
{
"_id" : ObjectId("5705fe62d0d50b2316617508"),
"date" : ISODate("2016-04-07T11:12:43.917Z"),
"XString" : "ba"
}
{
"_id" : ObjectId("5705fe62d0d50b2316617508"),
"date" : ISODate("2016-04-07T11:12:43.917Z"),
"XString" : "dd"
}
我如何将键“ XString”更新为“名称”,如果XString不存在,则应添加“名称”
尝试通过使用$ rename作为:
db.articles.update({}, {$set:{$rename: {'XString':'Name'}}},{upsert:true});
但它给出错误为:
The dollar ($) prefixed field '$rename' in '$rename' is not valid for storage.
尝试其他方式:
db.articles.update({}, {$rename: {'XString': 'Name'}}, false, true);
but its not adding the key is it does not exists
如果您的MongoDB服务器版本为3.2,则可以使用该updateMany()
方法。当然,您需要使用$exists
并且$rename
正如本答案中已经提到的那样。同样,该updateMany()
方法不采用“多”选项。
update()
从版本3.0开始,最后但并非最不重要的主要驱动程序都弃用了该方法
以下查询将“ XString”重命名为“ XString”所在的“名称”。
db.articles.updateMany(
{ "XString": { "$exists": true } },
{ "$rename": { "XString": "Name" } }
)
要设置不存在“ XString”的默认值,请使用$set
更新运算符。
db.articles.updateMany(
{ "Name": { "$exists": false } },
{ "$set": { "Name": "" } }
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句