【数据库】MongoDB

因上努力

个人主页:丷从心·

系列专栏:MongoDB

学习指南:数据库

果上随缘


数据库操作

查询数据库
show dbs
切换数据库
  • MongoDB中无需手动创建数据库,当切换到一个不存在的数据库时,会自动创建一个数据库
use student_info
查询当前数据库
db
删除数据库
use student_info

db.dropDatabase()
查询数据库版本
db.version()

数据集合操作

创建数据集合
db.createCollection('class_1')
  • 也可以不用手动创建数据集合,当使用一个不存在的数据集合时,会自动创建一个数据集合
查询数据集合
show collections
show tables
删除数据集合
db.class_1.drop()

数据插入

use student_info

db.class_1.insertOne({'name': 'follow__my_heart', 'age': 22})
  • 数据查询
db.class_1.find()
插入id重复的数据
db.class_1.insertOne({_id: 10010, 'name': 'follow__my_heart', 'age': 22})

db.class_1.save({_id: 10010, 'name': 'follow__my_heart', 'age': 18})

数据更新

数据更新一条
丢失其他字段
db.class_1.update({'name': 'follow__my_heart'}, {'name': 'follow__your_heart'})
保留其他字段
db.class_1.update({'name': 'follow__my_heart'}, {$set: {'name': 'follow__your_heart'}})
数据批量更新
db.class_1.update({'name': 'follow__my_heart'}, {$set: {'name': 'follow__your_heart'}}, {multi: true})

数据删除

数据删除一条
db.class_1.remove({'name': 'follow__your_heart'}, {justOne: true})
数据批量删除
db.class_1.remove({'name': 'follow__my_heart'})

数据查询

创建数据集合
use book_manager

db.getCollection('person_info').insert({
    name: '郭靖',
    hometown: '蒙古',
    age: 20,
    gender: true
})
db.getCollection('person_info').insert({
    name: '黄蓉',
    hometown: '桃花岛',
    age: 18,
    gender: false
})
db.getCollection('person_info').insert({
    name: '华筝',
    hometown: '蒙古',
    age: 18,
    gender: false
})
db.getCollection('person_info').insert({
    name: '黄药师',
    hometown: '桃花岛',
    age: 40,
    gender: true
})
db.getCollection('person_info').insert({
    name: '段誉',
    hometown: '大理',
    age: 16,
    gender: true
})
db.getCollection('person_info').insert({
    name: '段王爷',
    hometown: '大理',
    age: 45,
    gender: true
})
db.getCollection('person_info').insert({
    name: '洪七公',
    hometown: '华山',
    age: 18,
    gender: true
})

use book_shop

db.getCollection('product_info').insert({
    _id: 100,
    sku: 'abc123',
    description: 'Single line description'
})
db.getCollection('product_info').insert({
    _id: 101,
    sku: 'abc456',
    description: 'First line\nSecond line'
})
db.getCollection('product_info').insert({
    _id: 102,
    sku: 'abc789',
    description: 'Single line description'
})
db.getCollection('product_info').insert({
    _id: 103,
    sku: 'xyz123',
    description: 'Many lines description'
})
db.getCollection('product_info').insert({
    _id: 104,
    sku: 'xyz456',
    description: 'Many lines description'
})
数据查询一条
db.person_info.findOne({'age': 18})
查询格式化输出
  • 在终端中使用
db.person_info.find().pretty()
运算符
比较运算符
db.person_info.find({age: {$gte: 18}})
范围运算符
db.person_info.find({age: {$in: [18, 45]}})
逻辑运算符
db.person_info.find({$or: [{'age': 18}, {'hometown': '桃花岛'}]})
正则表达式查询
db.product_info.find({sku: /^abc/})
db.product_info.find({sku: {$regex: '^abc'}})
分页
查询前两条数据
db.product_info.find().limit(2)
略过前两条数据
db.product_info.find().skip(2)
自定义查询
db.person_info.find({
    $where: function () {
        return this.age <= 18;
    }
})
投影
db.person_info.find({age: {$gte: 18}}, {'name': 1, _id: 0})
排序
db.person_info.find().sort({'age': -1})
统计
db.person_info.count({'age': {$gte: 18}})
去重
db.person_info.distinct('hometown', {'age': {$gte: 18}})
聚合操作
$group
按指定字段分组
db.person_info.aggregate({
    $group: {_id: '$gender', count: {$sum: 1}, avg_age: {$avg: '$age'}}
})
  • {$sum: 1}中的1表示倍数
不进行分组
db.person_info.aggregate({
    $group: {_id: null, count: {$sum: 1}, avg_age: {$avg: '$age'}}
})
$project
投影
db.person_info.aggregate({
    $project: {_id: 0, name: 1, age: 1}
})
别名
db.person_info.aggregate(
    {$group: {_id: '$gender', count: {$sum: 1}, avg_age: {$avg: '$age'}}},
    {$project: {"性别": '$_id', "人数": '$count', "平均年龄": '$avg_age', _id: 0}}
)
$match
db.person_info.aggregate(
    {$match: {age: {$gt: 20}}},
    {$group: {_id: '$gender', count: {$sum: 1}}},
    {$project: {"性别": '$_id', "人数": '$count', _id: 0}}
)
$sort
db.person_info.aggregate(
  {$group: {_id: '$gender', count: {$sum: 1}}},
  {$sort: {count: -1}}
)
$limit
db.person_info.aggregate(
    {$limit: 2}
)
$skip
db.person_info.aggregate(
    {$skip: 2}
)

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时序数据库是一种专门用于存储和处理时间序列数据的数据库系统。在MongoDB中,可以通过创建时序数据集合来实现时序数据库的功能。通过使用命令`BCON_NEW("timeseries", "{", "timeField", "datetime", "}")`,可以创建一个MongoDB时序数据集合。这个命令指定了时间字段为`datetime`,以便对时间序列数据进行管理和查询。 在MongoDB中,可以使用`mongoc_client_get_database`函数来创建数据库。例如,可以通过执行`database1 = mongoc_client_get_database(client, "myfu")`来创建名为`myfu`的数据库。 此外,MongoDB还提供了与多个主要BI报告工具集成的功能,包括Tableau、QlikView、Microstrategy和TIBCO等。通过MongoDB BI连接器,可以将MongoDB与这些工具无缝集成,从而实现可视化和分析MongoDB中的数据。此外,MongoDB还提供了名为MongoDB Charts的本地BI报告工具,它可以快速可视化MongoDB中的数据,无需使用任何第三方产品。 总结起来,时序数据库是一种用于存储和处理时间序列数据的数据库系统。在MongoDB中,可以通过创建时序数据集合来实现时序数据库的功能。此外,MongoDB还提供了与多个主要BI报告工具集成的功能,以及一个本地的BI报告工具MongoDB Charts。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【用c/c++创建mongodb数据库时序集合,存储时序数据】](https://blog.csdn.net/m0_59138576/article/details/126788789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [「时序数据库」时间序列数据与MongoDB:第一部分-简介](https://blog.csdn.net/jiagoushipro/article/details/125063097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值