首页 > 数据库 >MongoDB

MongoDB

时间:2024-03-05 16:13:33浏览次数:22  
标签:name MongoDB age db 查询 stu find

1. 简介

  • MongoDB是一个非关系型数据库(NoSQL). 非常适合超大数据集的存储, 由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
  • 下面是Sql与mongodb的术语对比
SQLMongodb
表(Talbe) 集合(Collection)
行(Row) 文档(Document)
列(Col) 字段(Field)
主键(Primary Key) 对象ID(ObjectId)

2. MongoDB安装

windows安装:

mac的安装:https://blog.csdn.net/qq991658923/article/details/121436106

  • Mac启动:

    • mongod --dbpath /opt/mongodb/data --logpath /opt/mongodb/log/mongo.log --fork

    • mongo

3. MongoDB的简单使用

  • mongoDB的一些操作
show dbs: 显示所有数据库
show databases: 显示所有数据库
use xxxx: 使用指定数据库/创建数据库(新库中插入数据才可以显示新库)
db: 当前正在使用的数据库
db.dropDatabase(): 删除数据库
show collections: 显示当前数据库中所有的集合(表)

 

4. MongoDB的增删改查

4.1 mongodb中常见的数据类型

Object ID: 主键ID【"_id" : ObjectId("56063f17ade2f21f36b03133")】
String: 字符串
Boolean: 布尔值  
Integer: 数字
Doube: 小数
Arrays: 数组,[1,2,3]
Object: 文档(关联其他对象)  {sname: 李嘉诚, sage: 18, class:{cccc}}
Null : 空值 
Timestamp: 时间戳
Date: 时间日期

4.2 mongodb插入数据/文档

#collection_name集合/表不存在则会新建
db.collection_name.insert({字段:值,字段:值})

# 示例
db.c1.insert({name:"bobo", age:18, hobby:['eat', 'sleep']})

# 插入多条数据
#c1是表名/集合名
db.getCollection('c1').insertMany([
        {
            "name":"bobo",
        },
        {
            "address":"河北"
        },
    ]
);
  • 注意, 如果集合不存在. 则会自动创建集合

  • 插入数据后可以查询所有数据查看是否插入成功:

db.stu.find()

4.3 mongodb修改数据

#d1是表名
db.d1.update({查询条件}, {待修改内容}, {multi: 是否多条数据修改})
multi:true表示修改满足条件所有的内容,否则只修改满足条件的第一条内容,multi不写默认为false

# 示例
db.d1.update({name:"bobo"}, {$set:{title:"alex", hobby:['抽烟', '喝酒', '烫头']}}, {multi:true});

4.4 mongodb删除数据

# remove()
db.collection_name.remove({条件}, {justOne:true|false})
db.collection_name.remove() 删除所有记录
db.collection_name.drop()  删除collection/表

# 示例
db.nor_col.remove({name:"jay"}, {justOne:true})



# deleteOne()
db.collection_name.deleteOne({条件})

# 示例
db.nor_col.deleteOne({name:"jay"})



# deleteMany()
db.collection_name.deleteMany({条件})

# 示例
db.nor_col.deleteMany({name:"jay"})

4.5 mongodb查询数据

准备数据:

db.stu.insert([
    {name: "朱元璋", age:800, address:'安徽省凤阳', score: 160},
    {name: "朱棣", age:750, address:'江苏省南京市', score: 120},
    {name: "朱高炽", age:700, address:'北京紫禁城', score: 90},
    {name: "李嘉诚", age:38, address:'香港xxx街道', score: 70},
    {name: "麻花藤", age:28, address:'广东省xxx市', score: 80},
    {name: "大老王", age:33, address:'火星第一卫星', score: -60},
    {name: "咩咩", age:33, address:'开普勒225旁边的黑洞', score: -160}
])

4.5.1 普通查询

db.c1.find() 查询所有
db.c1.find({"字段":"固定值"})  查询满足条件的所有数据
db.c1.findOne({条件})  查询满足条件的第一条数据
db.getCollection('c1').find({"字段1":"固定值1","字段2":"固定值2"})

4.5.2 比较运算

# 等于: 默认是等于判断, $eq
# 小于:$lt (less than)
# 小于等于:$lte (less than equal)
# 大于:$gt (greater than)
# 大于等于:$gte
# 不等于:$ne


db.stu.find({age:28})  查询年龄是28岁的学生信息
db.stu.find({age: {$eq: 28}})  查询年龄是28岁的学生信息
db.stu.find({age: {$gt: 30}})   查询年龄大于30岁的学生
db.stu.find({age: {$lt: 30}})   查询年龄小于30岁的学生
db.stu.find({age: {$gte: 38}})  查询年龄大于等于30岁的学生
db.stu.find({age: {$lte: 38}})  查询年龄小于等于30岁的学生
db.stu.find({age: {$ne: 38}})   查询年龄不等于38的学生

4.5.3 逻辑运算符

# and
# $and: [条件1, 条件2, 条件3....]
查询年龄等于33, 并且, 名字是"大老王"的学生信息
db.stu.find({$and:[{age: {$eq:33}}, {name:'大老王'}]})



# or
# \$or: [条件1, 条件2, 条件3]
查询名字叫"李嘉诚"的, 或者, 年龄超过100岁的人
db.stu.find({$or: [{name: '李嘉诚'}, {age: {$gt: 100}}]})



# nor
# $nor: [条件1, 条件2, 条件3]
查询年龄不小于38岁的人, 名字还不能是朱元璋. 
db.stu.find({$nor: [{age: {$lt: 38}}, {name: "朱元璋"}]})

4.5.4 范围运算符

# 使用\$in, \$nin判断数据是否在某个数组内
db.stu.find({age: {$in:[28, 38]}})   年龄是28或者38的人

4.5.5 正则表达式

# 使用$regex进行正则表达式匹配
db.stu.find({address: {$regex:'^北京'}})  查询地址是北京的人的信息
db.stu.find({address: /^北京/})  效果一样

4.5.6 skip和limit

# 跳过3个. 提取3个. 类似limit 3, 3 可以用来做分页
db.stu.find().skip(3).limit(3)    

4.5.7 排序

# sort({字段:1, 字段:-1})
#    1表示升序
#    -1表示降序    

# 对查询结果排序, 先按照age升序排列, 相同项再按照score降序排列
db.stu.find().sort({age:1, score: -1})  

4.5.8 统计数量

# count(条件) 查询数量
db.stu.count({age:33})

 

标签:name,MongoDB,age,db,查询,stu,find
From: https://www.cnblogs.com/smile1/p/18054275

相关文章

  • .NET Core连接MongoDB数据库
    MongoDB是一个非关系型数据库,它以文档形式存储数据,具有高性能、可扩展和灵活的特点。在.NETCore中使用MongoDB驱动程序可以很方便地连接和操作MongoDB数据库。本文将介绍如何在.NETCore项目中连接MongoDB数据库,并提供一些常用的操作示例。安装MongoDB驱动程序在.NETCore项目中......
  • mongoDB操作命令
    更新列名db.Youzy_Stores.update({},{$rename:{"StoreId":"MetaId"}},false,true)查询长度db.getCollection("Youzy_Stores_Navigations").find({$where:'this.StoreId.length>2'},{Name:0})查询总条数db.getCollection("Youzy_S......
  • MongoDB 聚合
    MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的count(*)。aggregate()方法MongoDB中聚合的方法使用​aggregate()​。语法​aggregate()​方法的基本语法格式如下所示:>db.COLLECTION_NAME.aggregate(AGGR......
  • MongoDB 索引
    索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存......
  • [数据库] 使用索引(2): mongoDB
    mongoDB的索引mongodb的索引和mysql基本类似,也是默认主键(相当于mongo中的_id字段)为索引,进行索引排序etc.索引分类单键索引将一个字段作为索引,默认_id,也可以将其他字段作为索引db.collection.createIndex({year:1})其中value为1则是正序,为-1则是倒序复合索引......
  • Studio 3T 2024.1 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端,支持
    Studio3T2024.1(macOS,Linux,Windows)-MongoDB的专业GUI、IDE和客户端,支持自然语言查询TheprofessionalGUI,IDEandclientforMongoDB请访问原文链接:Studio3T2024.1(macOS,Linux,Windows)-MongoDB的专业GUI、IDE和客户端,支持自然语言查询,查看最新版......
  • MongoDB 入门教程
    基本概念数据库(Database)是集合的容器,相当于关系型DB中的数据库集合(Collection)数据库中的一组文档,相当于SQL中的表文档(Document)集合中的一条记录,相当于SQL的表中的一行。不同的文档之间不必有相同的结构,这一点是和SQL不同的。字段(Field)文档中的键值对,相当于SQL中的列。比......
  • [python] [mongoDB] pymongo -- 用python操作mongodb
    官方文档数据库格式mongodb采用了BSON格式,即database->collection->document,在python中,pymongo使用字典来表示一个documnet;document可以包含python原生的数据类型,比如datetime.datetime连接数据库MongoClient连接mongodb,读取数据库,集合和文档CRUD插入Collect......
  • Asp.Net Core访问阿里云MongoDB云数据库
    Asp.NetCore访问阿里云MongoDB云数据库选择.NetCore技术栈开发跨平台软件解决方案,投入少,产出快,有助于企业内部降本增效。MongoDB的实体类增加字段不用迁移数据库,适合需求经常变化的应用场景。如果是企业内部小型应用,拉一个MongoDB容器即可,如果要进一步考虑多节点冗余,高可用,异地......
  • mongodb大数据量分页查询优化
    业务背景mongodb大数据量分页查询主要耗时是查询总条数,所以有两种优化方式1.不查询总条数,查询最近N页数据[改动略多,执行耗时很短]2.增加页面时间范围必填条件[改动很小,执行耗时略长,与数据量有关][比如默认查询创建时间最近一个月的数据根据数据量做调整,创建时间有组合索引]这两种......