数据库
新增
语法:use databasename
如果数据库存在切换到数据库,不存在就创建对应的数据库
查询
语法:show dbs
查看所有数据库,刚创建没有插入数据的数据库不会显示。
语法:db 查询当前数据库
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
删除
语法:db.dropDatabase()
删除当前数据库,要删除数据库时先使用use databasename命令进入数据库然后再使用删除命令
集合
新增
语法:db.createCollection(name, options)
参数说明:
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项
options 可以是如下参数:
字段类型描述
capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数。
autoIndexId布尔(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size数值(可选)为固定集合指定一个最大值,以千字节计(KB)。
如果 capped 为 true,也需要指定该字段。
max数值(可选)指定固定集合中包含文档的最大数量。
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。> db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } ){ "ok" : 1 }
创建固定文档mycol,整个集合空间大小 6142800 KB, 自动在_id字段创建索引,文档最大个数为 10000 个。
查看
语法:show collections 或 show tables
在 MongoDB 中,一般不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
删除
语法:db.collection.drop()
如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。> db.mycol2.drop()
true
文档
新增
db..insert({}):向集合中插入一个或多个文档,当我们向集合中插入文档时如果没有指定_id,则数据库会自动添加_id该属性用来作为文档的唯一标识,_id的值可以自己指定,但是必须是唯一值,如果自己指定了_id的值,系统就不会再添加
db..insertOne({}):添加一条文档
db..insertMany({}):添加多条文档,参数为数组
新增一条文档db.student.insert({name:"small-orange",age:18,sex:"男"})
新增多条文档db.student.insert([{name:"xiaohong",age:20,sex:"女"},{name:"xiaomin",age:20,sex:"男"}])
insertMany()函数用法相同
指定_id的值db.student.insertOne({_id:"hello",name:"orange",age:16,sex:"男"})
查询
db.getCollection().find({}):查询集合中的所有文档记录
db..find({}):查询集合中的所有文档记录
find()函数的参数可以给筛选条件的对象查询所有记录
db.getCollection("student").find({})
db.student.find({})
按条件查询db.student.find({age:18}) 查询名字为orange的记录
db.student.findOne({age:18}) 返回符合条件的第一个文档
db.student.find({}).count() 返回查询记录的条数
6
修改
db..update():更新一条或多条文档记录,默认是替换
db..updateOne():更新一条文档记录
db..updateMany():更新多条文档记录
db..replace():替换文档db.student.update(
{name:"xiaomin"},
{age:20}
) 替换旧对象,多个符合替换条件时,只会替换第一个db.student.update(
{name:"xiaohong"},
{$set:{age:20}},
{multi:true}
) multi参数默认为false,为true时会更新多个,此时update相当于updateMany()db.student.update(
{name:"huizhi"},
{$set:{age:10,score:100}}
) 加上$set后为修改对应字段的值,另外如果有原来没有的字段,会直接添加到集合中db.student.update(
{name:"huizhi"},
{$unset:{age:10,score:100}}
) 删除unset里面对应字段db.student.updateMany(
{name:"huizhi"},
{$unset:{age:10,score:100}}
) 更新多条记录db.student.updateOne(
{name:"huizhi"},
{$set:{age:10,score:98}}
) 更新一条记录
删除
语法:db..remove(options)db.student.remove({_id:"hello"}) 删除一个或多个文档,默认多个
db.student.remove({_id:"hello"},true) 删除一个时传递参数
db.student.remove({}) 清空集合,较db.student.drop()性能低,remove会逐条删除,drop直接清除所有
MongoDB 与 RDBMS Where 语句比较
测试数据
AND条件
语法格式:db.col.find({key1:value1, key2:value2})
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。db.student.find(
{name:"xiaohong",sex:"男"}
)
结果:{ "_id" : ObjectId("5e0f5d7ced35695bbf082161"), "name" : "xiaohong", "age" : 18.0, "sex" : "男"}
OR条件
语法格式如下:db.col.find( { $or: [ {key1: value1}, {key2:value2} ] })db.student.find(
{$or:[{name:"xiaohong"},{age:20}]}
)
结果:{
"_id" : ObjectId("5e0f5d7ced35695bbf082161"),
"name" : "xiaohong",
"age" : 18.0,
"sex" : "男"
}
{
"_id" : ObjectId("5e0ffbf9ed35695bbf082165"),
"name" : "xiaohong",
"age" : 20.0,
"sex" : "女"
}
{
"_id" : ObjectId("5e0ffbf9ed35695bbf082166"),
"name" : "xiaomin",
"age" : 20.0,
"sex" : "男"
}
AND条件与OR条件并用db.student.find(
{sex:"男",$or:[{name:"xiaohong"},{age:20}]}
)
结果:
{
"_id" : ObjectId("5e0f5d7ced35695bbf082161"),
"name" : "xiaohong",
"age" : 18.0,
"sex" : "男"
}
{
"_id" : ObjectId("5e0ffbf9ed35695bbf082166"),
"name" : "xiaomin",
"age" : 20.0,
"sex" : "男"
}