MongoDB的使用

启动服务器

  1. 打开cmd
  2. 输入mongod,启动服务器
  3. 输入mongo,回车

基本概念

  1. 数据库(database)
  2. 集合(collection)
  3. 文档(document)

在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果所在的集合或数据库不存在,会自动差UN改接口数据库和集合。

基本命令

  1. show dbs(show database): 显示当前所有数据库
  2. use: 数据库名称
  3. db: 代表的就是当前数据库
  4. show collections: 显示当前数据库中所有的集合

数据库的CRUD(常用)

插入:
1. db.<collection>.insert(doc)
    向集合中插入一个文档
    例子:向test数据库中的,student中插入一个学生对象
    db.student.insert({name:'景天',age: 18})
2. db.<collection>.insertOne(),只插入一个
3. db.<collection>.insertMany(),插入多个,必须是数组

查询:
1. db.<collection>.find()
    返回值是一个数组
    不传值: 查询当前集合中的所有文档
    传值:必须是一个对象
    例子:db.students.find({name: "景天"})
2. db.<collection>.findOne()
    返回值是一个对象
    查询集合中符合条件的第一个文档
3. db.<collection>.find().conut()
    查询集合中一共有多少个文档
4. db.<collection>.find({"info.name":"景天"})
    查询多级嵌套文档,属性需要用引号
5. db.<collection>.find().limit(10)
    只显示10条数据
6. db.<collection>.find().skip(10).limit(10)
    跳过10条数据,显示10条数据,相当于显示11-20的数据
7. db.<collection>.find().sort()
    需要传递一个参数来排序,1是正序,-1是倒序
    例子:db.students.find().sort({age:1,weight:-1})
8. db.<collection>.find({},{})
    第二个参数,是投影,意思是哪些想要显示出来的,写在这里就行了,1是显示,-1是不显示
    例子:db.students.find({},{name:1})     // 意思只显示name,age等其他字段不显示出来了
    
操作符:
    $gt:判断文档中大于某个值时(大于小于可以一起写,用逗号分割,意思为,大于A且小于B的值)
        例子:db.students.find({num:{$gt:500}})
        大于等于:
        例子:db.students.find({num:{$gte:500}})
    $lt:判断文档中小于某个值时
        例子:db.students.find({num:{$lt:500}})
        小于等于:
        例子:db.students.find({num:{$lte:500}})
    $or:判断文档中符合某个条件或者某个条件
        db.students.find({$or:[{num:{$lt:500}},{num:{$gt:800}}]})
修改:
1. db.<collection>.update(查询条件,新对象)
    update()默认情况会是用新对象替换旧的对象,即旧对象中所有东西都没有了,只有新对象。
    update()默认情况值修改一个。
    如果需要修改指定的属性,而不是替换,需要使用’修改操作符‘来完成修改:
    $set: 修改指定文档的某个值为新的值,没有这个值就会添加一个新的值
        例子:db.students.update({name:"景天"},{$set:{age:20}})
    $unset: 删除指定文档的某个值
        例子:db.students.update({name:"景天"},{$unset:{age:20}})
    $push:当文档是数组时,往里面添加数据
        例子:db.students.update({name:"景天"},{$push:{like:"龙葵"}})
    $addToSet:当文档是数组时,往里面添加数据(和上面的push不同的是,当数组中已有要添加的值,就不会再添加了)
        例子:db.students.update({name:"景天"},{$addToSet:{like:"龙葵"}})
    $pull:当文档是数组时,删除符合条件的数据
        例子:db.students.update({name:"景天"},{$pull:{like:"龙葵"}})
    $inc:自增
        给文档中的所有num字段小于500的增加100
        例子:db.students.updateMany({num:{$lt:500}},{$inc:{num:100}})
2. db.<collection>.updateOne(查询条件,新对象)
    修改一个符合条件的文档
3. db.<collection>.updateMany(查询条件,新对象)
    修改多个符合条件的文档
4. db.<collection>.replaceOne(查询条件,新对象)
    替换一个新的文档

删除:
1. db.<collection>.remove({})
    可以根据条件删除一个文档,传参和查找一样的,但是必须传参,可以是一个空对象,当传空对象的时候,就会删除全部。
    默认删除所有符合条件的文档,有多少删除多少,相当于清空集合
2. db.<collection>.deleteOne()
    删除集合中的一个文档
3. db.<collection>.deleteMany()
    删除集合中的多个文档
4. db.<collection>.drop()
    删除集合,集合整个没了

使用例子

一对多的关系

// 前提:两个集合,一个是users,里面包含N用户;一个是orders,里面包含N个订单

// 查询用户 吕子乔 的所有订单
// 先查询users集合,查询到吕子乔的用户ID
var userId = db.users.findOne({name:"吕子乔"})._id   
// 再根据用户ID用orders中查找改用户ID的订单
db.orders.find({userId:userId})                     

多对多的关系

基本和一对多一样,只是userID这个应该是个数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值