MongoDB基本命令
-
登录到mongo
//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。 mongo --port 27017 //#切换到admin库 use admin
-
数据库操作
use blog #创建数据库 show dbs | show databases # 查看所有的数据库 db #查看当前正在使用的mongo db.dropDatabase() # 删除数据库
-
集合操作
db.createCollection("user") #创建用户集合 show collections | show tables #查看所有的集合 db.user.drop #删除集合
-
文档基本操作
# 1. 插入操作 db.user.insert( {"age":20,"name":"张三","email":"123456789@qq.com"}, #插入的文档 { # 可选"writeConcern": ordered:true #可选。如果为真,则按顺序插入数组中的文档,如果其中一个文档出现错误,MongoDB将返回而不处理数组中的其余文档。如果为假,则执行无序插入,如果其中一个文档出现错误,则继续处理数组中的主文档。在版本2.6+中默认为true } ) db.user.insert( {"age":20,"name":"张三","email":"123456789@qq.com"}, { ordered:true } ) # 2.查询操作 db.collection.find( <query>, #可选。使用查询运算符指定选择筛选器 [projection]) #可选。指定要在与查询筛选器匹配的文档中返回的字段(投影)。 db.user.find({"age":20}) db.user.find({"age":20},{age:1,_id:0}) # 3.更新操作 db.collection.update( query, # 更新的选择条件 update, #要应用的修改 options) options{ upsert # 可选。如果设置为true,则在没有与查询条件匹配的文档时创建新文档。默认值为false,如果找不到匹配项,则不会插入新文档 multi # 可选。如果设置为true,则更新符合查询条件的多个文档。如果设置为false,则更新一个文档。默认值为false。 } db.user.update({age:20},{age:21}) # 除了age,其他字段都会被更新掉 db.user.insert({"age":29,"name":"李四","email":"987654321@qq.com"}) db.user.update({"age":29},{$set:{"age":30}}) # 局部更新 # 4.删除文档 db.collection.remove(条件) db.user.remove({"age":21})
-
分页查询
db.user.count() #统计集合的记录数 db.collection.find().limit(number1).skip(number2) #分页查询 db.user.find().limit(2)
-
高级查询
db.collection.find({field:/正则表达式/}) # 正则表达式查询 db.user.find({"name":/李/}) db.user.find({age:{$gt:28}}) #比较查询 < $lt,<= $lte,> $gt,>= $gte ,!= $ne db.user.find({age:{$in:[28,29]}}) # 包含查询 db.user.insert({"age":28,"name":"张三","email":"987654321@qq.com"}) db.user.find({$and:[{age:28},{name:"张三"}]} # 条件连接查询 $and $or
-
索引类型
- 单字段索引
- 复合索引
- 其他索引:地理空间索引(Geospatial Index)、文本索引(Text Indexes)、哈希索引(Hashed Indexes)
-
基本命令操作
db.user.getIndexes() # 返回集合中存在的索引 db.collection.createIndex( keys, #包含字段和值对的文档,其中字段是索引键,值描述该字段的索引类型。对于字段上的升序索引,请指定值1;对于降序索引,请指定值-1 options) # 包含一组控制索引创建的选项的文档 db.user.createIndex({age:1}) db.user.dropIndex({age:1})#删除索引 db.collection.dropIndexes() #删除所有索引
-
索引的使用
db.collection.find().explain() #分析查询性能 #当查询条件和查询的投影仅包含索引字段时,MongoDB直接从索引返回结果,而不扫描任何文档或将文档带入内存