这里总结一下mongo常用操作语句,分享给大家和我自己~
打印系统,数据库,集合的信息
db.stats() 打印数据库状态
db 打印当前数据库名称
db.stats() 打印数据库状态
show dbs 打印所有的数据库
show users 打印用户
db.getName() 打印数据库名称
show collections 打印当前数据库下所有的表名
db.getCollectionNames() 打印当前数据库的表名
db.printCollectionStats() 打印各表的状态信息
db.printShardingStatus() 打印分片状态信息
数据库操作
use test 切换到test数据库
db.dropDatabase() 删除当前数据库
集合操作
# foo换成你要操作的集合名字
插入文档
db.users.insert({username: "smith"}) 插入数据
save和insert区别
可以看到决定是插入一个文档还是更新,取决于_id参数。如果能根据_id找到一个已经存在的文档,那么就更新。如果没有传入_id参数或者找不到存在的文档,那么就插入一个新文档。
insert: 若新增数据的主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常提示主键重复,不保存当前数据。
save: 若新增数据的主键已经存在,则会对当前已经存在的数据进行修改操作。
查询文档
db.foo.distinct(key) 按照给定的条件除重
db.foo.distinct('x') 参考上行
db.foo.count() 统计集合的行数
db.foo.dataSize() 统计集合数据的大小
db.foo.find(...).count() 计数
db.foo.find(...).limit(n) 根据条件查找数据并返回指定记录数
db.foo.find(...).skip(n)
db.foo.find(...).sort(...) 查找排序
db.col.find({},{"title":1,_id:0}).sort({"likes":-1}),这里排序的列还要加上引号?-1表示倒排
db.foo.findOne([query]) 根据条件查询只查询一条数据
db.foo.find( [query] , [fields])
db.foo.find( { x : 77 } , { name : 1 , x : 1 } )
db.users.find().pretty() 格式化查询出来的数据
db.foo.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } ) 根据条件分组
db.foo.mapReduce(mapFunction,reduceFunction,<optional params>)
使用and操作
db.foo.find({$and: [
{ x: 1 },
{ username: "smith"}
]})
使用or操作
db.foo.find({$or: [
{ x: 1 },
{ username: "smith"}
]})
更新文档
只更新某个字段 db.foo.update({username: "smith"}, {$set: {country: "Canada"}})
替换更新,而不是更新某个字段 db.foo.update({username: "smith"}, {country: "Canada"})
删除字段 db.foo.update({username: "smith"}, {$unset: {country: 1}})
删除文档
根据条件删除数据 db.foo.remove(query)
集合元数据操作
删除集合 db.foo.drop()
重命名集合 db.foo.renameCollection(newName)
返回表所属的库 db.foo.getDB() get DB object associated with collection
查看表的状态 db.foo.stats()
查询分配到表空间大小 db.foo.storageSize()
查询所有索引的大小 db.foo.totalIndexSize()
查询表的总大小 db.foo.totalSize()
集合索引操作
删除指定索引 db.foo.dropIndex(name)
删除所有索引 db.foo.dropIndexes()
增加索引 db.foo.ensureIndex(keypattern,options)
显示表的所有索引 db.foo.getIndexes()
用户,角色,权限操作
先切换到admin库 use admin
创建用户
db.createUser({
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
登陆 db.auth("myUserAdmin", "abc123")
为用户授权 db.grantRolesToUser("myUserAdmin", [ { role: "read", db: "admin" } ])