自学Mongodb 三、mongdb常用操作及数据类型

121 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、数据库与集合操作

1、查询数据库

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
> 

2、进入/切换 数据库(例子中的test是数据库名称)

> use test
switched to db test
> 

3、查看集合

> show tables
emp
project
student
subject
subject2
> 

4、删除数据库

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
tuling  0.000GB
> use test
switched to db test
> db.dropDatabase()
{ "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
tuling  0.000GB
> 

5、删除集合

> show tables
emp
project
student
subject
subject2
> db.subject2.drop()
true
> show tables
emp
project
student
subject
> 

二、mongoDB的CURD

1、插入数据

1.1、插入单条数据:

> db.friend.insertOne({name:"wukong",sex:"man"});
{
        "acknowledged" : true,
        "insertedId" : ObjectId("61075940719910761eae3176")
}
> show tables
friend
> db.friend.find()
{ "_id" : ObjectId("61075940719910761eae3176"), "name" : "wukong", "sex" : "man" }
> 

1.2、插入多条数据:

> db.friend.insertMany([{name:"wukong",sex:"man"},{name:"diaocan",sex:"woman",age:18,birthday:new Date("1995-11-02")},{name:"zixiao",sex:"woman"}]);
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("6107623d719910761eae3177"),
                ObjectId("6107623d719910761eae3178"),
                ObjectId("6107623d719910761eae3179")
        ]
}
> db.friend.find()
{ "_id" : ObjectId("61075940719910761eae3176"), "name" : "wukong", "sex" : "man" }
{ "_id" : ObjectId("6107623d719910761eae3177"), "name" : "wukong", "sex" : "man" }
{ "_id" : ObjectId("6107623d719910761eae3178"), "name" : "diaocan", "sex" : "woman", "age" : 18, "birthday" : ISODate("1995-11-02T00:00:00Z") }
{ "_id" : ObjectId("6107623d719910761eae3179"), "name" : "zixiao", "sex" : "woman" }
> 

1.3、指定id插入数据:

> db.friend.insert([{_id:1,name:"wokong",sex:"man",age:1},{_id:2,name:"diaocan",sex:"women",birthday:new Date("1988-11-11")}]);
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 2,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})
> db.friend.find()
{ "_id" : ObjectId("61075940719910761eae3176"), "name" : "wukong", "sex" : "man" }
{ "_id" : ObjectId("6107623d719910761eae3177"), "name" : "wukong", "sex" : "man" }
{ "_id" : ObjectId("6107623d719910761eae3178"), "name" : "diaocan", "sex" : "woman", "age" : 18, "birthday" : ISODate("1995-11-02T00:00:00Z") }
{ "_id" : ObjectId("6107623d719910761eae3179"), "name" : "zixiao", "sex" : "woman" }
{ "_id" : 1, "name" : "wokong", "sex" : "man", "age" : 1 }
{ "_id" : 2, "name" : "diaocan", "sex" : "women", "birthday" : ISODate("1988-11-11T00:00:00Z") }
> 

2、查询数据

2.1、全表查询

语法:db.表名.find() (前提是进入数据库,如 use test后)

> db.friend.find()
{ "_id" : ObjectId("61075940719910761eae3176"), "name" : "wukong", "sex" : "man" }
{ "_id" : ObjectId("6107623d719910761eae3177"), "name" : "wukong", "sex" : "man" }
{ "_id" : ObjectId("6107623d719910761eae3178"), "name" : "diaocan", "sex" : "woman", "age" : 18, "birthday" : ISODate("1995-11-02T00:00:00Z") }
{ "_id" : ObjectId("6107623d719910761eae3179"), "name" : "zixiao", "sex" : "woman" }
{ "_id" : 1, "name" : "wokong", "sex" : "man", "age" : 1 }
{ "_id" : 2, "name" : "diaocan", "sex" : "women", "birthday" : ISODate("1988-11-11T00:00:00Z") }
> 

2.2、运算符

$and:与,即多个条件交集

> db.emp.find()
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }

> db.emp.find({$and:[{"job":"讲师"},{"dep":"讲师部"}]})
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
> 

$or: 或,即多个条件并集

> db.emp.find()
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }

> db.emp.find({$or:[{job:"班主任"},{"job":"教务"}]})
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
> 

$in:包含,即一个列的多个取值的并集

> db.emp.find()
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }

> db.emp.find({"name":{$in:["小乔","大乔"]}})db.emp.find({"name":{$in:["小乔","大乔"]}})
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }
> 

$gt:大于

> db.emp.find()
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }

> db.emp.find({"salary":{$gt:8000}})db.emp.find({"salary":{$gt:8000}})
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
> 

$gte:大于等于

> db.emp.find()
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }

> db.emp.find({"salary":{$gte:8000}})db.emp.find({"salary":{$gte:8000}})
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
> 

$lt:小于

> db.emp.find()
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }

> db.emp.find({"salary":{$lt:5000}})db.emp.find({"salary":{$lt:5000}})
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }
> 

$lte:小于等于

> db.emp.find()
{ "_id" : 1101, "name" : "鲁班", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1102, "name" : "悟空", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1103, "name" : "诸葛", "job" : "讲师", "dep" : "讲师部", "salary" : 10000 }
{ "_id" : 1105, "name" : "赵云", "job" : "讲师", "dep" : "讲师部", "salary" : 8000 }
{ "_id" : 1106, "name" : "韩信", "job" : "校长", "dep" : "校办", "salary" : 20000 }
{ "_id" : 1107, "name" : "貂蝉", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1108, "name" : "安其", "job" : "班主任", "dep" : "客服部", "salary" : 8000 }
{ "_id" : 1109, "name" : "李白", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1110, "name" : "默子", "job" : "教务", "dep" : "教务处", "salary" : 8000 }
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }

> db.emp.find({"salary":{$lte:5000}})db.emp.find({"salary":{$lte:5000}})
{ "_id" : 1111, "name" : "大乔", "job" : "助教", "dep" : "客服部", "salary" : 5000 }
{ "_id" : 1112, "name" : "小乔", "job" : "助教", "dep" : "客服部", "salary" : 3000 }
>