MongoDB 增删改查命令
MongoDB 菜鸟教程概念解析:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
1.1 添加操作db.User.save({name:'zhangsan',age:21,sex:true})
向集合Collection中添加数据User属性
> db.User.save({name:'zhangsan',age:21,sex:true})
WriteResult({ "nInserted" : 1 })
> db.User.save({name:'lucy',age:18,sex:false})
WriteResult({ "nInserted" : 1 })
> db.User.save({name:'tom',age:19,sex:false})
WriteResult({ "nInserted" : 1 })
1.2 查询
1.2.1 查询所有 db.User.find()
> db.User.find()
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 18, "sex" : true }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
1.2.2 条件查询 db.User.find({age:19},{'name':1,'age':1})
条件查询:查询年龄等于19岁,显示姓名和年龄
> db.User.find({age:19},{'name':1,'age':1})
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19 }
1.3 指定字段排序db.User.find().sort({age:1})
在MongoDB中使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。
> db.User.find().sort({age:1})
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 18, "sex" : true }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
> db.User.find().sort({age:-1})
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 18, "sex" : true }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
1.4 分页显示db.User.find().skip(0).limit(2)
在MongoD中使用limit()方法来读取指定数量的数据,skip()方法来跳过指定数量的数据
> db.User.find().skip(0).limit(2)
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 18, "sex" : true }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
> db.User.find().skip(1).limit(2)
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
1.5 查询条件in包含db.User.find({age:{$in:[18,20]}})
> db.User.find({age:{$in:[18,19]}})
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 18, "sex" : true }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
> db.User.find({age:{$in:[19]}})
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
> db.User.find({age:{$in:[20]}})
1.7 统计查询到的数量db.User.find({age:{$gt:19}}).count()
> db.User.find({age:{$gt:19}}).count()
0
> db.User.find({age:{$gt:18}}).count()
1
> db.User.find({age:{$eq:18}}).count()
2
1.8 条件语句or或db.User.find({$or:[{age:19},{age:18}]})
> db.User.find({$or:[{age:19},{age:18}]})
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 18, "sex" : true }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
> db.User.find({$or:[{age:19},{age:20}]})
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
1.9 修改数据update()
可直接用类似T-SQL条件表达式更新,或用Save()更新从数据库返回到文档对象。
修改数据库中姓名为zhangsan的age和sex字段的值 db.User.update({name:'zhangsan'},{$set:{age:100,sex:0}})
> db.User.find().skip(0).limit(3)
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 18, "sex" : true }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
> db.User.update({name:'zhangsan'},{$set:{age:100,sex:0}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.User.find().skip(0).limit(3)
{ "_id" : ObjectId("633ed32002a26f1c66c632e0"), "name" : "zhangsan", "age" : 100, "sex" : 0 }
{ "_id" : ObjectId("633eda6d32cf64478292df05"), "name" : "lucy", "age" : 18, "sex" : false }
{ "_id" : ObjectId("633edb6d32cf64478292df06"), "name" : "tom", "age" : 19, "sex" : false }
2.0 删除remove()
指定id删除: db.User.remove(id) 全部删除:db.User.remove({})
2.1 索引
- 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB,在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。
这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。 - 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。
db.User.createIndex({‘name’:1})
|