gpt4 book ai didi

mongodb - 如何重命名mongodb中的所有键?

转载 作者:可可西里 更新时间:2023-11-01 10:00:25 26 4
gpt4 key购买 nike

我有这样的文档:

{
"_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”更新为“Name”,如果 XString 不存在,它应该添加“Name”

尝试使用 $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

最佳答案

错误的选择。您需要 "multi" 而不是 "upsert":

db.articles.update(
{ "XString": { "$exists": true } },
{ "$rename": { 'XString': 'Name' } },
{ "multi": true }
);

$exists测试确保您只选择您要重命名的 key 实际存在的文档。

还有 $rename是一个“更新修饰符”,这意味着它是“更新”文档的“顶级”参数。

“multi” 意味着影响所有 匹配的文档,而不仅仅是“第一个”。

如果你想要一个“空白”值,其中键实际上不存在,那么你做相反的事情,最好是在 $rename 操作之后:

db.articles.update(
{ "Name": { "$exists": false } },
{ "$set": { 'Name': '' } },
{ "multi": true }
);

关于mongodb - 如何重命名mongodb中的所有键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com