MongoDB的基本使用

MongoDB简介

  • MongoDB是为快速开发互联网Web应用而设计的数据库系统
  • MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分
  • MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。(BSON

三个概念

  • 数据库(database) – 数据库是一个仓库,在仓库中可以存放集合。
  • 集合(collection – 集合类似于数组,在集合中可以存放文档。(可以理解为一个表)
  • 文档(document)– 文档数据库中的最小单位,我们存储和操作的内容都是文档。(可以理解为键值对)

创建数据库

/*
use 数据库名
–使用use时,如果数据库存在则会进入到相应的数据库,如果不存在则会自动创建
–一旦进入数据库,则可以使用db来引用当前库
db.collection.insert(文档)
–向集合中插入文档,如果集合不存在则创建
db.createCollection()
–创建一个新的集合
db.collection.drop()
–删除集合
*/
use test
db.user.insert({username:"zhangwuji"})
db.user.find()

CRUD-添加文档

/*
db.collection.insert (文档对象)
insert()可以用于向集合中添加一个或多个文档,可以传递一个对象,或一个数组。可以将对象或数组中的对象添加进集合中,添加时如果集合或数据库不存在,会自动创建插入的文档对象会默认添加_id属性,这个属性对应一个唯一的id,是文档的唯一标识
*/
/*
    db.collection.insert()
        -向集合中插入一个或多个文档
    db.collection.insertOne()
        -向集合中插入一个文档,改方法中只能传递一个document对象
    db.collection.insertMany()
        -向集合中插入多个文档,该方法只能接受一个数组作为参数
*/
db.user.insert({username:"zhangwuji"});
//插入多个文档,[]表示数组
db.user.insert([
    {username:"aaa"},
    {username:"bbb"},
    {username:"ccc"}
])
db.user.insertOne({username:"zhaoming"})

CRUD-删除文档

/*
删除集合
    db.collection.deleteOne()  
    -删除符合条件的第一个文档
    db.collection.deleteMany()
    -删除符合条件的所有文档
    db.collection.remove()
    -如果remove()中传递一个空的对象作为参数,则会删除集合中的所有文档,慎用!
    db.collection.drop()
    -删除集合,如果数据库中只有一个集合,会将数据库一起删除
    db.dropDatebase()
    -删除数据库
*/
//删除喜欢城市是beijing的用户
db.user.remove({"hobby.cities":"beijing"});
//删除user集合(数据备份,慎用)
db.user.remove({})
db.user.drop();

CRUD-修改文档

/*
    db.collection.update(查询条件,新的对象)
        -修改文档
        -update()默认情况下会使用新的文档替换旧的文档,如果不希望整个替换文档,则需要使用修改器
    修改器 $set、 $unset 、$inc、$push、$addToSet等
         $set 用来向文档中添加一个属性,语法:db.test_coll.update(查询对象, {$set:更新对象});
         $unset可以用来删除文档中一个不需要的字段,用法和set类似
         $inc用来增加已有键的值,或者该键不存在那就创建一个
         $inc只能用于Number类型的值

*/
//这样会用address把username给替换掉,而不是添加address
db.user.update({username:"zhangwuji"}, {address:"guangmingding"})
//添加的正确做法是使用$set修改器
db.user.update({username:"zhangwuji"}, {$set:{address:"guangmingding"}})
db.user.find();
//删除username为sunwukong的文档的address属性,使用$unset修改器
db.user.update({username:"zhangwuji"}, {$unset:{address:"guangmingding"}})

/*
    MongoDB的文档的属性值也可以是一个文档,如果一个文档的属性值还是文档
    那我们叫做内嵌文档
*/
//向username为sunwukong的文档中,添加一个hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}
db.user.update({username:"zhangwuji"}, {$set:{hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}}});

/*
    $push 可以用来向数组中添加一个元素
    $addToSet 用来向数组中添加一个不存在的元素  
*/
//向tangseng中添加一个新的电影Interstellar
db.user.update({username:"zhaoming"}, {$push:{"hobby.movies":"Interstellar"}})
db.user.update({username:"zhangwuji"}, {$addToSet:{"hobby.movies":"Hello"}})

CRUD-查询文档

/*
find()、findOne()
    db.collection.find()
        -查询指定集合中所有符合条件的文档,不加参数,返回集合中的所有文档
        -可以在find()添加一个对象作为查询条件
        -返回的是一个数组
        -可以将查询条件以键值对的形式添加到查询文档中
    db.collection.findOne()
        -返回集合中第一个满足条件的文档
        -返回结果是一个对象,可以直接.属性
查询条件
    $lt、$lte、$gt、$gte、$ne、$or、$in、$nin、$not、$exists、$and
*/
db.user.find();
//返回第一个符合条件username的值
db.user.findOne().username;
db.user.find()[0].username;
//返回username等于“aaa”的一条文档
db.user.find({username:"aaa"});
//查询喜欢电影hero的文档
db.user.find({"hobby.movies":"hero"})
//创建一个数组,用来保存文档
var arr = [];
for(var i=1; i <= 20000; i++){
    arr.push({num:i})
}
db.numbers.insert(arr);
db.numbers.find();
//查询numbers中num为500的文档
db.numbers.find({num:{$eq:500}})
/*
    查询操作符
    $eq 查询指定的字段是否等于某个值
*/
db.numbers.find({num:500})

//查询numbers中num大于5000的文档
db.numbers.find({num:{$gt:5000}});
db.numbers.find({num:{$gte:5000}});
//查询numbers中num小于30的文档
db.numbers.find({num:{$lt:30}})
//查询numbers中num大于40小于50的文档
db.numbers.find({num:{$gt:40, $lt:50}})
//查询大于19000 或 小于40的
db.numbers.find({$or:[{num:{$gt:19000}}, {num:{$lt:40}}]})

//查询numbers中num大于19000的文档
db.numbers.find({num:{$gt:19000}})
//查看numbers集合中的前10条数据,limit()用来限制显示数据的最大的条数
db.numbers.find({}).limit(10)

/*
    在MongoDB中通过limit()和skip()方法来完成分页
    第一页 limit(10).skip(0)
    第二页 limit(10).skip(10)
    ...
    limit(每页条数).skip(每页条数*(页码-1))
*/
//每页五条记录
db.numbers.find().limit(10).skip(5)
db.numbers.find().limit(10).skip(10)
db.numbers.find().limit(10).skip(15)
db.numbers.find().limit(10).skip(20)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值