MongoDB教程:https://www.runoob.com/mongodb/mongodb-tutorial.html
数据库操作
> use bbs //创建或使用数据库
> show dbs //查看数据库
> db.stats() //查看数据库详情
> db.user.stats(); //查看数据库表详情
> db //查看当前使用数据库
> db.dropDatabase() //删除当前使用的数据库
集合操作
> db.createCollection("user") //创建集合
> show tables (show collections) //查看当前数据库中的集合
> db.user.drop() //删除集合
文档操作——插入
> db.user.insert({"name":"毛毛",age:18,sex:1}) //向user表中插入单条数据
> db.user.insertMany([{"name":"毛毛","age":18,"sex":1},{"name":"俊俊","age":18,"sex":1}]) //向user表中插入多条数据
> db.user.find() //查看user表中的数据
文档操作——更新
> db.user.find() //查看user表中的数据
{ "_id" : ObjectId("605bf6d9f258543704c2b573"), "name" : "毛毛", "age" : 18, "sex" : 1 }
{ "_id" : ObjectId("605bf9f3f258543704c2b574"), "name" : "毛毛", "age" : 18, "sex" : 1 }
{ "_id" : ObjectId("605bf9f3f258543704c2b575"), "name" : "俊俊", "age" : 18, "sex" : 1 }
//更新id为605bf6d9f258543704c2b573的数据(注意:这里更新的是整条数据的内容)
> db.user.update({ "_id" : ObjectId("605bf6d9f258543704c2b573")},{"age":17})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
更新后的结果如下:
> db.user.find()
{ "_id" : ObjectId("605bf6d9f258543704c2b573"), "age" : 17 }
{ "_id" : ObjectId("605bf9f3f258543704c2b574"), "name" : "毛毛", "age" : 18, "sex" : 1 }
{ "_id" : ObjectId("605bf9f3f258543704c2b575"), "name" : "俊俊", "age" : 18, "sex" : 1 }
对数据指定内容更新修改,使用$set:
> db.user.update({"_id" : ObjectId("605bf9f3f258543704c2b574")},{$set:{"age":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find()
{ "_id" : ObjectId("605bf6d9f258543704c2b573"), "age" : 17 }
{ "_id" : ObjectId("605bf9f3f258543704c2b574"), "name" : "毛毛", "age" : 1, "sex" : 1 }
{ "_id" : ObjectId("605bf9f3f258543704c2b575"), "name" : "俊俊", "age" : 18, "sex" : 1 }
在更新多条数据的时候,update只会默认更新匹配到的第一条数据:
> db.user.update({"sex":1},{$set:{"name":"毛俊刚"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find()
{ "_id" : ObjectId("605bf6d9f258543704c2b573"), "age" : 17 }
{ "_id" : ObjectId("605bf9f3f258543704c2b574"), "name" : "毛俊刚", "age" : 1, "sex" : 1 }
{ "_id" : ObjectId("605bf9f3f258543704c2b575"), "name" : "俊俊", "age" : 18, "sex" : 1 }
更新匹配到的多条数据,需要增加参数multi:true:
> db.user.update({"sex":1},{$set:{"name":"毛哥"}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.user.find()
{ "_id" : ObjectId("605bf6d9f258543704c2b573"), "age" : 17 }
{ "_id" : ObjectId("605bf9f3f258543704c2b574"), "name" : "毛哥", "age" : 1, "sex" : 1 }
{ "_id" : ObjectId("605bf9f3f258543704c2b575"), "name" : "毛哥", "age" : 18, "sex" : 1 }
对年龄进行自增,使用$inc:
> db.user.update({"_id" : ObjectId("605c06a8f258543704c2b577")},{$inc:{"age":10}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find()
{ "_id" : ObjectId("605c06a8f258543704c2b576"), "age" : 17 }
{ "_id" : ObjectId("605c06a8f258543704c2b577"), "name" : "毛哥", "age" : 11, "sex" : 1 }
{ "_id" : ObjectId("605c06a8f258543704c2b578"), "name" : "毛哥", "age" : 18, "sex" : 1 }
文档操作——删除
删除user表中指定数据:
> db.user.remove({ "_id" : ObjectId("605c06a8f258543704c2b576")})
WriteResult({ "nRemoved" : 1 })
删除user表中所有数据:
> db.user.remove({})
WriteResult({ "nRemoved" : 2 })
文档操作——查询
> db.user.find()
{ "_id" : ObjectId("605c2cf7f258543704c2b579"), "name" : "毛毛", "age" : 18, "sex" : 1 }
{ "_id" : ObjectId("605c2d1af258543704c2b57a"), "name" : "俊俊", "age" : 19, "sex" : 1 }
{ "_id" : ObjectId("605c2d2cf258543704c2b57b"), "name" : "刚刚", "age" : 20, "sex" : 1 }
{ "_id" : ObjectId("605c2d3df258543704c2b57c"), "name" : "小毛", "age" : 21, "sex" : 1 }
{ "_id" : ObjectId("605c2d4ef258543704c2b57d"), "name" : "小毛毛", "age" : 22, "sex" : 1 }
> db.user.count({"age":{$lt:20},"sex":1}) //查询条数
2
默认格式话查询第一条;
> db.user.findOne()
格式化查询所有:
> db.user.find().pretty()
1.条件查询:
等于示例:
> db.user.find({"age":18,"sex":1})
{ "_id" : ObjectId("605c2cf7f258543704c2b579"), "name" : "毛毛", "age" : 18, "sex" : 1 }
小于示例:
> db.user.find({"age":{$lt:20}})
{ "_id" : ObjectId("605c2cf7f258543704c2b579"), "name" : "毛毛", "age" : 18, "sex" : 1 }
{ "_id" : ObjectId("605c2d1af258543704c2b57a"), "name" : "俊俊", "age" : 19, "sex" : 1 }
大于示例:
> db.user.find({"age":{$gt:20}})
{ "_id" : ObjectId("605c2d3df258543704c2b57c"), "name" : "小毛", "age" : 21, "sex" : 1 }
{ "_id" : ObjectId("605c2d4ef258543704c2b57d"), "name" : "小毛毛", "age" : 22, "sex" : 1 }
包含示例
> db.user.find({"name":/俊/})
{ "_id" : ObjectId("605c2d1af258543704c2b57a"), "name" : "俊俊", "age" : 19, "sex" : 1 }
以...开头示例:
> db.user.find({"name":/^小/})
{ "_id" : ObjectId("605c2d3df258543704c2b57c"), "name" : "小毛", "age" : 21, "sex" : 1 }
{ "_id" : ObjectId("605c2d4ef258543704c2b57d"), "name" : "小毛毛", "age" : 22, "sex" : 1 }
在...之中示例:
> db.user.find({"age":{$in:[19,20]}})
{ "_id" : ObjectId("605c2d1af258543704c2b57a"), "name" : "俊俊", "age" : 19, "sex" : 1 }
{ "_id" : ObjectId("605c2d2cf258543704c2b57b"), "name" : "刚刚", "age" : 20, "sex" : 1 }
2. 关于and和or的使用$or:
> db.user.find({"sex":1,$or:[{"age":20},{"age":22}]})
{ "_id" : ObjectId("605c2d2cf258543704c2b57b"), "name" : "刚刚", "age" : 20, "sex" : 1 }
{ "_id" : ObjectId("605c2d4ef258543704c2b57d"), "name" : "小毛毛", "age" : 22, "sex" : 1 }
3. 分页查询:
> db.user.find().limit(2) //查询前两条数据
{ "_id" : ObjectId("605c2cf7f258543704c2b579"), "name" : "毛毛", "age" : 18, "sex" : 1 }
{ "_id" : ObjectId("605c2d1af258543704c2b57a"), "name" : "俊俊", "age" : 19, "sex" : 1 }
> db.user.find().skip(2) //跳过前两条数据查询
{ "_id" : ObjectId("605c2d2cf258543704c2b57b"), "name" : "刚刚", "age" : 20, "sex" : 1 }
{ "_id" : ObjectId("605c2d3df258543704c2b57c"), "name" : "小毛", "age" : 21, "sex" : 1 }
{ "_id" : ObjectId("605c2d4ef258543704c2b57d"), "name" : "小毛毛", "age" : 22, "sex" : 1 }
> db.user.find().skip(2).limit(2) //跳过前两条数据,查询两条数据
{ "_id" : ObjectId("605c2d2cf258543704c2b57b"), "name" : "刚刚", "age" : 20, "sex" : 1 }
{ "_id" : ObjectId("605c2d3df258543704c2b57c"), "name" : "小毛", "age" : 21, "sex" : 1 }
4. 排序查询:(sort方法可以指定排序的字段,值为1升序,值为-1降序)
> db.user.find().sort({"age":-1}).skip(2).limit(3) //降序跳过前两条查询三条数据
{ "_id" : ObjectId("605c2d2cf258543704c2b57b"), "name" : "刚刚", "age" : 20, "sex" : 1 }
{ "_id" : ObjectId("605c2d1af258543704c2b57a"), "name" : "俊俊", "age" : 19, "sex" : 1 }
{ "_id" : ObjectId("605c2cf7f258543704c2b579"), "name" : "毛毛", "age" : 18, "sex" : 1 }
索引操作
> db.user.createIndex({"age":1}) //创建索引
> db.user.dropIndex({"age":1}) //删除索引
{ "nIndexesWas" : 2, "ok" : 1 }
创建索引参数设置
> db.user.createIndex({"age":1},{background:true}) //单值索引
> db.user.createIndex({"age":1,"sex":1}) //复合索引
> db.user.getIndexes() //查看索引
> db.user.dropIndex("age_1_sex_1") //删除指定索引
{ "nIndexesWas" : 3, "ok" : 1 }
> db.user.find({"age":1}).explain() //查询字段详情