登录数据库
mongosh
指定用户密码登录
mongosh --username aishu --password P@ssword123 --authenticationDatabase
创建数据库并使用该数据库
use CRM
查看当前使用的数据库
db
查看所有数据库
show dbs
创建拥有root权限的超级用户
db.createUser({ user: 'aishu', pwd: 'P@ssword123', roles: ['root'] })
创建并使用test表
db.test
显示表
show collections
删除当前选定的数据库
db.dropDatabase();
删除表
db.collection_name.drop()
插入一条数据,官方推荐
db.course.insertOne({"name":"linux","price":1070})
插入多条数据,无需参数控制,官方推荐
db.test.insertMany([{"name":"java","price":1080},{"name":"python","price":1000}])
无条件查询:将该表中所有的数据一次性返回
db.test.find() find()
条件查找:price等于1070的数据,这里会返回多条结果
db.test.find({"price":1070})
根据条件修改一条数据的内容,如果出现多条,只修改最靠前的一条数据
db.test.updateOne({"price":1070},{$set:{"name":"hello world"}})
根据条件修改所有数据的内容,多条修改
db.test.updateMany({"price":1070},{$set:{"name":"Go"}})
删除数据
MongoDB提供了三个用于删除的API,分别是:
db.test.remove() 不推荐
db.test.deleteOne() 推荐
db.test.deleteMany() 推荐
db.test.deleteMany({"name":"Go"})
MongoDB的数据类型
objectID : Documents自生产成的_id
“_id” : ObjectId(“5b151f8536409809ab2e6b26”)
“5b151f85” 代指的是时间戳,这条数据的产生时间
“3640998” 代指某台机器的机器码,存储这条数据的机器标号
“09ab” 代指进程ID,多进程存储数据的时候,非常有用
“2e6b26” 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的
以上四种标识符拼凑成世界上唯一的ObjectId
只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectId进行转换
可以得到以上四重信息
注意:这个类型是不可以被json序列化的
-
常见的$关键字
-
(等于)
在MongoDB中什么字段等于什么值其实就是":“来搞定, 比如"name”:“linux”
> db.course.find({"name":"linux"})
{ "_id" : ObjectId("5c3f10265591b5b80202c90a"), "name" : "linux", "score" : 100 }
$in
查询一个键的多个值
> db.course.find({"name":{$in:["linux","Go"]}})
{ "_id" : ObjectId("5c3f10265591b5b80202c90a"), "name" : "linux", "score" : 100 }
{ "_id" : ObjectId("5c3f10265591b5b80202c90b"), "name" : "Go", "score" : 80 }
o r 满足任意 or 满足任意 or满足任意or条件的数据,至少要满足一个
> db.course.find({$or:[{"score":100},{"score":80}]})
{ "_id" : ObjectId("5c3f10265591b5b80202c90a"), "name" : "linux", "score" : 100 }
{ "_id" : ObjectId("5c3f10265591b5b80202c90b"), "name" : "Go", "score" : 80 }
g e ( 大于 ) 在 M o n g o D B 中大于 > 号我们用 : ge(大于) 在MongoDB中大于 >号我们用 : ge(大于)在MongoDB中大于>号我们用:gt 比如:“score”:{$gt:80}就是得到"score"大于80的数据
> db.course.find({"score":{$gt:70}})
{ "_id" : ObjectId("5c3f10265591b5b80202c90a"), "name" : "linux", "score" : 100 }
{ "_id" : ObjectId("5c3f10265591b5b80202c90b"), "name" : "Go", "score" : 80 }
KaTeX parse error: Expected '}', got 'EOF' at end of input: …号我们用: "score":{lt:80} 就是得到"score"小于80 的数据
> db.course.find({"score":{$lt:80}})
{ "_id" : ObjectId("5c3f10265591b5b80202c909"), "name" : "python", "score" : 59 }
$gte (大于等于)
大于等于 : 在MongoDB中的 大于等于 >= 号 我们用 : $gte 比如 : “score” : { $gte : 80 } 就是 得到 “score” 大于等于 80 的数据
> db.course.find({"score":{$gte:80}})
{ "_id" : ObjectId("5b98f5b3430c27444ccdd64b"), "name" : "Python", "score" : 100 }
{ "_id" : ObjectId("5b98f5b3430c27444ccdd64c"), "name" : "Go", "score" : 80 }
$lte(小于等于)
小于等于 : 在MongoDB中的 小于等于 <= 号 我们用 : $lte 比如 : “score” : { $lte : 80 } 就是 得到"score"小于等于80的数据
> db.course.find({"score":{$lte:80}})
{ "_id" : ObjectId("5b98f5b3430c27444ccdd64a"), "name" : "Linux", "score" : 59 }
{ "_id" : ObjectId("5b98f5b3430c27444ccdd64c"), "name" : "Go", "score" : 80 }