您的位置:首页 > 数据库 > Mongodb

MongoDB与PHP -- Shell操作

2013-11-20 11:54 411 查看
首先要运行MongoDB,即MongoDB安装目录下的 mongo.exe

No.1: 常用Shell命令
// 1.查询本地所有数据库名称
> show dbs;

// 2.切换到指定数据库(若不存在则创建)
> use dbname;

// 3.查询当前数据库下的所有集合
> show collections;

// 4.创建集合
> db.createCollection('user');

// 5.查询集合中的条数
> db.user.count();

// 6.集合重命名
> db.user.renameCollection('newuser');

// 7.删除集合
> db.user.drop();

// 8.删除数据库
> db.dropDatabase();

// 9.创建索引
> db.user.ensureIndex({'user':1,'random':1});

// 10.连接远程服务器
> mongo 192.168.100.101:27017/admin
// admin数据库,可不指定
> mongo --nodb
// 不连接数据库,只执行JavaScript


No.2: 常用Shell CURD
// 1.插入数据
> db.user.insert({'user':'admin','age':20,'point':300});

// 2.查询age为20的数据
> db.user.find({'age':20});

// 3.查询point大于200的数据
> db.user.find({point:{$gt:200}});

// 4.查询age大于15 且 point小于500的数据
> db.user.find({age:{$gt:15}, point:{$lt:500}});

// 5.查询查询age大于15 或 point小于500的数据
> db.user.find({$or:[{age:{$gt:15}},{point:{$lt:500}}]});

// 6.查询指定列的数据 (1表示显示此列)
> db.user.find({}, {user:1,age:1});

// 7.查询列user中包含‘m’的数据
> db.user.find({user:/e/});

// 8.查询列user以a开头的数据
> db.user.find({user:/^a/});

// 9。查询列age数据,并去掉重复项
> db.user.distinct('age');

// 10.查询前10条数据
> db.user.find().limit(10);

// 11.查询5条以后的所有数据
> db.user.find().skip(5);

// 12.查询第一条数据
> db.user.findOne();

// 13.查询结果集的记录数
> db.user.find().count();

// 14.查询结果按age升序排序
> db.user.find().sort({age:1});

// 15.查询结果按age降序排序
> db.user.find().sort({age:-1});

// 16.根据列user修改age
> db.user.update({user:'admin'}, {$set:{age:22}}, true, false);
// db.collection.update(criteria, objNew, upsert, multi);
// criteria -- 查询条件(where)
// objNew -- 新值(set)
// upsert -- 不存在记录时,是否插入新记录,true为插入,默认false
// multi -- 默认为false,只更新找到的第一条数据,为true则更新找到的所有数据

// 17.指定user的age增加5
> db.user.update({user:'admin'}, {$inc:{age:5}}, false, true);

// 18.删除指定user的数据
> db.user.remove({user:'admin'});

// 19.查询指定_id的数据
> db.user.find({'_id':ObjectId('mongoid')});

// 20.Save 保存文档,存在时更新,不存时插入
> var x = db.coll.findOne();
> x.num = 6;
> db.coll.save(x);
// 同等于
> db.coll.update({'_id':x._id}, x);


No.3: MongoDB 备份和修复
// 1.只要简单的复制数据目录中的所有文件即可备份(需要先关闭服务器)

// 2.mongodump 和 mongorestore
// mongodump是一种能在运行时备份的方法.对运行的MongoDB做查询,然后将所有查到的文档写入磁盘
> mongodump -d test -o backup // 将数据库test备份到backup目录
// mongorestore是从备份中恢复数据的工具
> mongorestore -d testNew --drop backup/test/ // 恢复testNew 数据库
// -d指定要恢复的数据库.--drop指在恢复前删除集合(若存在),否则数据就会与现有集合数据合并,可能会覆盖一些文档

// 3.MongoDB的fsync命令
> db.runCommand({"fsync":1,"lock":1}) // 强制执行fsync并获得写入锁
// 这时,数据目录的数据就是一致的,且为数据的实时快照.因为上了锁,可以安全的将数据目录副本作为备份
> db.$cmd.sys.unlock.findOne() // 解锁
> db.currentOp() // 确保已经解锁了(初次请求解锁会花点时间)
// 有了fsync命令,就能非常灵活的备份,不用停掉服务器,也不用牺牲备份的实时性能.要付出的代价就是一些写入操作被暂时阻塞了.唯一不耽误读写还能保证实时快照的备份方式就是通过从服务器备份

// 4.修复
> mongod --repair //命令行方式
> db.repairDatabase() //Shell方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: