根据条件查找数据 ----------------------- 通过条件查询: db.foo.find( { x : 77 } , { name : 1 , x : 1 } ) ----------------------------- db.foo.find(...).count() db.foo.find(...).limit(n) 根据条件查找数据并返回指定记录数 db.foo.find(...).skip(n) db.foo.find(...).sort(...) 查找排序 db.foo.findOne([query]) 根据条件查询只查询一条数据 db.foo.getDB() get DB object associated with collection 返回表所属的库 db.foo.getIndexes() 显示表的所有索引 db.foo.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } ) 根据条件分组 db.foo.mapReduce( mapFunction , reduceFunction , <optional params> ) db.foo.remove(query) 根据条件删除数据 db.foo.renameCollection( newName ) renames the collection 重命名表 db.foo.save(obj) 保存数据 db.foo.stats() 查看表的状态 db.foo.storageSize() - includes free space allocated to this collection 查询分配到表空间大小 db.foo.totalIndexSize() - size in bytes of all the indexes 查询所有索引的大小 db.foo.totalSize() - storage allocated for all data and indexes 查询表的总大小 db.foo.update(query, object[, upsert_bool]) 根据条件更新数据 db.foo.validate() - SLOW 验证表的详细信息 db.foo.getShardVersion() - only for use with sharding Mongodb的备份工具mongodump 如果想备份数据库test 如: CODE: [falcon@www.fwphp.cn ~/mongodb/bin]$ ./mongodump --help options: --help produce help message -h [ --host ] arg mongo host to connect to -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -u [ --username ] arg username -p [ --password ] arg password --dbpath arg directly access mongod data files in this path, instead of connecting to a mongod instance -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) -o [ --out ] arg (=dump) output directory [falcon@www.fwphp.cn ~/mongodb/bin]$ ./mongodump -d test -o test/ connected to: 127.0.0.1 DATABASE: test to test/test test.user to test/test/user.bson 100000 objects test.system.indexes to test/test/system.indexes.bson 1 objects [falcon@www.fwphp.cn ~/mongodb/bin]$ ls 2 mongo mongodump mongofiles mongorestore mongosniff dump mongod mongoexport mongoimport mongos test MongoDB的数据恢复工具mongorestore 查看test库中的表 CODE: > show collections system.indexes User 删除user表 CODE: > db.user.drop(); True > show collections System.indexes 现在利用mongorestore表恢复刚才利用mongodump备份的数据 CODE: [falcon@www.fwphp.cn ~/mongodb/bin]$ ./mongorestore --help usage: ./mongorestore [options] [directory or filename to restore from] options: --help produce help message -h [ --host ] arg mongo host to connect to -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -u [ --username ] arg username -p [ --password ] arg password --dbpath arg directly access mongod data files in this path, instead of connecting to a mongod instance -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) [falcon@www.fwphp.cn ~/mongodb/bin]$ ./mongorestore -d test -c user test/test/user.bson connected to: 127.0.0.1 test/test/user.bson going into namespace [test.user] 100000 objects User表中的10w条记录已经恢复 CODE: > show collections system.indexes user > db.user.find(); { "_id" : ObjectId("4b9c8db08ead0e3347000000"), "uid" : 1, "username" : "Falcon.C-1" } { "_id" : ObjectId("4b9c8db08ead0e3347010000"), "uid" : 2, "username" : "Falcon.C-2" } { "_id" : ObjectId("4b9c8db08ead0e3347020000"), "uid" : 3, "username" : "Falcon.C-3" } { "_id" : ObjectId("4b9c8db08ead0e3347030000"), "uid" : 4, "username" : "Falcon.C-4" } { "_id" : ObjectId("4b9c8db08ead0e3347040000"), "uid" : 5, "username" : "Falcon.C-5" } ................. has more 1. 超级用户相关: #增加或修改用户密码 db.addUser('admin','pwd') #查看用户列表 db.system.users.find() #用户认证 db.auth('admin','pwd') #删除用户 db.removeUser('mongodb') #查看所有用户 show users #查看所有数据库 show dbs #查看所有的collection show collections #查看各collection的状态 db.printCollectionStats() #查看主从复制状态 db.printReplicationInfo() #修复数据库 db.repairDatabase() #设置记录profiling,0=off 1=slow 2=all db.setProfilingLevel(1) #查看profiling show profile #拷贝数据库 db.copyDatabase('mail_addr','mail_addr_tmp') #删除collection db.mail_addr.drop() #删除当前的数据库 db.dropDatabase() 2. 客户端连接 /usr/local/mongodb/bin/mongo user_addr -u user -p 'pwd' 3. 增删改 #存储嵌套的对象 db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]}) #存储数组对象 db.user_addr.save({'Uid':'yushunzhi@sohu.com','Al':['test-1@sohu.com','test-2@sohu.com']}) #根据query条件修改,如果不存在则插入,允许修改多条记录 db.foo.update({'yy':5},{'$set':{'xx':2}},upsert=true,multi=true) #删除yy=5的记录 db.foo.remove({'yy':5}) #删除所有的记录 db.foo.remove() 4. 索引 增加索引:1(ascending),-1(descending) db.things.ensureIndex({firstname: 1, lastname: 1}, {unique: true}); #索引子对象 db.user_addr.ensureIndex({'Al.Em': 1}) #查看索引信息 db.deliver_status.getIndexes() db.deliver_status.getIndexKeys() #根据索引名删除索引 db.user_addr.dropIndex('Al.Em_1') 5. 查询 查找所有 db.foo.find() #查找一条记录 db.foo.findOne() #根据条件检索10条记录 db.foo.find({'msg':'Hello 1'}).limit(10) #sort排序 db.deliver_status.find({'From':'yushunzhi@sohu.com'}).sort({'Dt',-1}) db.deliver_status.find().sort({'Ct':-1}).limit(1) #count操作 db.user_addr.count() #distinct操作 db.foo.distinct('msg') #>操作 db.foo.find({"timestamp": {"$gte" : 2}}) #子对象的查找 db.foo.find({'address.city':'beijing'}) 6. 管理 查看collection数据的大小 db.deliver_status.dataSize() #查看colleciont状态 db.deliver_status.stats() #查询所有索引的大小 db.deliver_status.totalIndexSize()