MongoDB基本操作
1、创建数据库
格式:usr database_name
如果数据库存在创建数据库,否则切换到指定数据库
> use mydb
switched to db mydb
>
2、查看数据库
查看数据库列表:
格式:show dbs
注意:如果是刚创建的新数据库并不会出现在数据库列表中,要显示它需要插入数据。
查看当前使用数据库:
格式: db
>db mydb
>
注意:
1、在MongoDB中默认数据库为test,如果你没有创建新的数据库,集合会放在test数据库中。
2、在MongoDB中,集合只有插入内容后才会创建,也就是说创建集合后需要插入一个文档,集合才会被创建。
三、删除数据库
格式:db.dropDatabase()
再查看下数据库是否被删除,使用show dbs;
四、创建集合
格式:db.createCollection(name, options)
参数说明:name 要创建的集合名称,options可选参数,指定有关内存大小及索引选项
查看已有的集合使用:show collections
在MongoDB中,插入一些文档时,如果集合不存在,它会自动帮你创建
五、删除集合:
格式:db.COLLECTIONS_NAME.drop()
成功删除返回true,否则返回false
六、插入文档
格式:db.COLLECIONS_NAME.insert(document)
db.COLLECIONS_NAME.save(document)
两个格式区别:如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
在collection1中插入数据:
成功插入数据后,使用db.COLLECIONS_NAME.find()查看指定集合数据。其中的"_id"是系统自动生成的
也可以把数据定义成一个变量,插入集合
首先定义变量document,然后把document当做变量插入collection2
插入多条数据:
格式:db.COLLECTION_NAME.insert([{文档1},{文档2}...])
(db.collection1.find()后面不要管,shell 的一个bug)
七、更新文档
格式:
db.COLLECTION_NAME.update(
<query>,
<update>,
{
upsert:<boolean>,
multi:<boolean>,
writeConcern:<document>
}
)
参数说明:
-
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
把"_id"为 ObjectId("5b8f21288eca67517610e01b") 对应的name的值改为"嘤嘤嘤"
示例一:
更新满足条件的第一条数据:
db.collection1.update({"age":{$lt:21}},{$set:{"age":"21"}});
在collection1更新 将age小于21岁的age设置为21
示例二:
更新满足条件的全部数据:
db.collection1.update({"age":{$lt:21}},{$set:{"age":21}},false,true);
末尾的false是upsert 的参数,true是multi 的参数。
示例三:
添加第一条数据:
db.collection1.update({"age":{$gt:23}},{$set:{"age":23}},true,false);
在collection1中寻找有没有满足 年龄大于23的,没有找到便添加{"age":23}这个数据,找到则把找到的第一条数据设置成23.
八、删除文档:
db.collection1.deleteOne({"age":"25"});
删除collection1中年龄25的文档。
db.collection1.deleteMany({"age":22});
删除集合中所有年龄22岁的文档。
db.collection1.deleteMany({})
删除文档
九、查询文档
语法:db.collection_name.find(query, projection)
参数说明:
query:可选,使用查询操作符指定查询条件
projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
栗子1:
在find()后添加pretty()会以易读方式显示。
栗子2:
使用and条件查询:
在MongoDB中传入多个键值对,每个键用逗号隔开
格式:db.collection_name.find({key1:value1, key2:value2})
查找age大于21岁,并且name为name3的文档
使用or条件查询:
在查询条件前添加$or,
格式:db.collection_name.find(
{
$or : [
{key1:value1}, { key2:value2}
]
}
)
新鲜的栗子:查找name是name4或者age是22的文档
limi()方法:
指定读取数量
语法:
db.COLLECTION_NAME.find().limit(NUMBER);
栗子:只读取两条数据
skip方法:
跳过指定数量的数据开始读取
语法:db.collection_name.find().skip(2);
sort方法:
对数据进行排序,用1代表升序,-1代表降序
语法:db.COLLECTION_NAME.find().sort({KEY:1})
对年龄进行降序