gpt4 book ai didi

linux - 在 Mongodb 命令行中搜索和替换

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:50 27 4
gpt4 key购买 nike

我可以找到所有的 first_name

> db.users.find().forEach( function(myDoc) { print( "first_name: " + myDoc.first_name ); } );
first_name: test1
first_name: test2
first_name: test3
first_name: test4
>

但是当我尝试将它们全部更改为测试时,我得到了

> db.users.find().forEach( function(myDoc) { $set: {myDoc.first_name: "testing"};  } );
2018-06-27T16:58:54.268+0200 E QUERY SyntaxError: Unexpected token :
>

问题

谁能看出为什么它不将所有 first_name 值替换为 testing

最佳答案

您的代码的问题是 $set只能在 update 语句中使用,因为它是一个字段更新运算符。所以你的代码可以改成:

db.users.find().forEach( function(myDoc) { db.users.update({_id: myDoc._id}, { $set: { first_name: "testing"} } ) ;  } );

无需获取所有文档即可实现:

db.users.update({}, { $set: { first_name: "testing3"} }, { multi: true } )

或者如果您想在 forEach 中修改文档,那么您可以在 Mongo shell 中使用 .save() 方法,例如:

db.users.find().forEach( function(myDoc) { myDoc.first_name = "testing2"; db.users.save(myDoc); } );

关于linux - 在 Mongodb 命令行中搜索和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51066086/

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