MongoDB非关系型数据库

Intro

在这里插入图片描述

  • Document 文档 – row / record
{"site":"www.runoob.com", "name":"菜鸟教程"}

文档是一组键值(key-value)对

  • collection 集合 – table
    对集合可以插入不同格式和类型的数据,包含多个document

基础

DB

创建或者连接到一个数据库
在MongoDB的shell里:

use DATABASE_NAME

删除当前数据库

db.dropDatabase()

collection

创建collection

db.createCollection(name, options)

插入document到collection

db.name.insert({"key": "value"})

删除集合

db.collection.drop()

document

使用 insert() 或 save() 方法向集合中插入文档

db.COLLECTION_NAME.insert(document)

insert(): 若插入的数据主键已经存在,
则会抛 org.springframework.dao.DuplicateKeyException 异常,
提示主键重复,不保存当前数据。

或
db.COLLECTION_NAME.save(document)

查找

db.collection_name.find(query, projection)

query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)。

where by = ‘菜鸟教程’

db.col.find({"by":"菜鸟教程"}).pretty()

where likes < 50

db.col.find({"likes":{$lt:50}}).pretty()

find匹配多个键值

 db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()

find使用AND OR
'where likes>50 AND (by = ‘菜鸟教程’ OR title = ‘MongoDB 教程’

db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]  }).pretty()

可以把整个document数据赋给一个变量,直接用变量进行操作

document=({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
});

db.collection_name.insert(document)

操作符

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果
获取 “col” 集合中 title 为 String 的数据:

db.col.find({"title" : {$type : 2}})
或
db.col.find({"title" : {$type : 'string'}})

limit, skip

limit

db.COLLECTION_NAME.find().limit(NUMBER)

NUMBER:从MongoDB中读取的记录条数

skip

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

NUMBER:作为跳过的记录条数


排序

db.COLLECTION_NAME.find().sort({KEY:1})

1:升序
-1:降序

>db.col.find({}, {"title":1,_id:0}).sort({"likes":-1})
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
{ "title" : "MongoDB 教程" }

聚合 aggregate

MongoDB聚合

聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似 SQL 语句中的 count(*)。

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

计算每个作者所写的文章数

sql
select by_user, count(*) from mycol group by by_user
mongodb
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值