-
启动 MongoDB 服务:mongod
-
启动 MongoDB Shell:mongo
-
连接到带有身份验证的数据库: 如果 MongoDB 实例启用了身份验证,你需要提供用户名和密码来连接到数据库。首先,使用
mongo命令连接到 MongoDB 服务,使用use myDatabase切换到目标数据库,然后使用db.auth()方法进行身份验证: 再使用db.auth("myUsername", "myPassword")进行身份验证mongo use hz_test_S109999 db.auth("hz_test_S109999","Vobsmcvszi5qYtw8") -
线上项目使用管理员身份直接登录,可获取所有数据库列表:
mongo -uroot -p`cat /data/save/mongodb_root` admin
- 给用户增加数据库权限:
db.addUser("hz_test_S189999", "Vobsmcvszi5qYtw8", { roles: ["readWrite"] }) db.addUser("hz_test_S189999", "Vobsmcvszi5qYtw8", { roles: ["dbOwner"] }) db.addUser("hz_test_S189999", "Vobsmcvszi5qYtw8", { roles: ["userAdminAnyDatabase "] }) - 一些条件查询语句:
db.char.find({ account: "fb" }) db.char.find({ account: "fb" }).count();//获取符合条件的总文档数量 db.char.find({ account: "fb", lv: 1});//多个条件查询 db.char.find({ account: "fb", lv: { $lt: 10 }}); db.char.find({ account: "fb", lv: { $lt: 10 }}).count();//查询所有account为"fb",且等级小于十级的文档数量 db.char.find({ account: "fb" }, { lv: 1, _id: 0 });//查询所有account为"fb"的文档,并输出其lv字段的值 db.char.find({ account: "fb", lv: 33 }, { name: 1, _id: 0 });//查询所有account为"fb",且等级为33的文档,并输出其lv字段的值 - 一些更新语句:
db.char.update({account: "fb"},{ $set: { account: "110035-fb" } },{ multi: false });//把account为"fb"的文档的 account字段值修改为"110035-fb",multi为false表示只更新一条符合条件的文档 db.char.update({account: "fb", lv: { $lt: 20 }},{ $set: { account: "110035-fb" } },{ multi: false });//把account为"fb" 且 lv 小于 20 的文档的 account字段值修改为"110035-fb",multi为false表示只更新一条符合条件的文档 - 通过脚本更新字段:
8.1.创建update.js脚本
// 获取所有匹配的文档
var cursor = db.collection.find({ name: /^fb/ });
```js
// 遍历所有匹配的文档并更新 while (cursor.hasNext()) { var doc = cursor.next(); var newName = "110035" + doc.name; // 在 name 字段前加上 110035 db.collection.update( { _id: doc._id }, // 根据文档的 _id 查找文档 { $set: { name: newName } } // 更新 name 字段 ); }
## 8.2 在mongo shell中执行命令
```js
use hzw_hw01_S110035 //切换到目标数据库
load("/data/update_fb.js") //执行脚本