首页 > 数据库 >MongoDB(1):数据库和集合基本操作

MongoDB(1):数据库和集合基本操作

时间:2022-09-29 22:33:54浏览次数:42  
标签:name MongoDB 数据库 db id 文档 集合 基本操作 age

MongoDB是一款非关系型数据库。传统的关系型数据库受到各种关系的累赘,各种数据形式的束缚难以处理海量数据以及超高并发的业务场景。
而MongoDB又是一个非关系数据库中功能最丰富、最像关系数据库的。

MongoDB

MongoDB支持的数据结构是非常松散的,是类似json的bson格式。

{
   title: 'MongoDB',
   body: 'MongoDB是非关系型数据库',
}

MongoDB中一个数据库保护多个集合,一个集合包含多个文档,类似于MySQL中一个表包含多条数据。
集合级表,文档为一条记录。

基本概念

show dbs #查看所有数据库的列表
db # 查看当前数据库对象或者集合
use db_name # 切换数据库

文档

一个文档就是一行数据,MongoDb中使用一种json的bson存储数据,bson数据可以理解为在json的基础上添加了一些json中没有的数据类型。

文档之间的逻辑关系

#user
{
    "name": "TOM",
    "age": "10"
}
#address
{
    "city":"BeiJing",
    "building": "22A"
}

# 嵌入关系,一个文档嵌入到另外一个文档中
# address嵌入到user中
{
    "name": "TOM",
    "age": "10",
    "address":{
        "city":"BeiJing",
        "building": "22A"
    }
}
# 引用关系,通过引用文档_id来建立关系
{
    "name": "TOM",
    "age": "10",
    "address_ids":[ObjectID("123456") ]
}

嵌入关系适用于一对一关系,引用式关系适用于一对多或多对多。

集合

即关系数据库中的表,可以包含多条结构不同的文档

{"user":"john", "age":"20"}
{"level": "Hard"}

缺点

同结构的数据要多次存储字段名,比如每条user文档都要存储字段名"name" 和 "age"

元数据

数据库的信息:DBNAME.system.*
DBNAME.system.namespaces :列出所有名字空间
DBNAME.system.indexs :列出所有索引
DBNAME.system.profile :列出数据库概要信息
DBNAME.system.users :列出访问数据库的用户
DBNAME.system.sources :列出服务器信息

数据库的创建和销毁

  1. 创建 use db_name
  2. 销毁 db.dropDatabase()

创建集合

db.createCollections("Collection_name")
show collections : 查看创建的集合
db.collecion_name.drop() : 删除集合

插入数据

  1. insert()
# 插入数据时,集合会自动创建
db.collection_name.insert([
    {name:"tom", age:"20"},
    {name:"john", age:"12"}
])
  1. save
# 插入数据时,集合会自动创建
db.collection_name.save([
    {name:"tom", age:"20"},
    {name:"john", age:"12"}
])

insert和save的区别

insert只能插入一条新的记录
save可以插入新的也可以更改某条记录
如果已经有了一条记录(以主键为准),insert 操作会报错,而使用 save 指令则会更新原记录。

查询

  1. find()
db.collections.find() # 不传递参数返回所有记录
db.collections.find().pretty()  # 让输出结构更美观
  1. and
# 输入多个键值对实现and
db.collections.find({key1:val1, key2:val2})
  1. OR
# 使用$or关键字
db.collections.find( { $or:[{key1:val1}, {key2:val2}]})
  1. 同时使用AND和OR
db.collections.find({"key1": "val1", 
    $or:{
    [
      {key2:val2},{key3:val3}
]
}
  1. 数字比较
    $gt,$eq,$gte,$lte

集合创建与删除

db.createCollection(name,options)

> db.createCollection("shiyanlou") #无参数
{ "ok" : 1 }
> show collections
shiyanlou
system.indexes
> db.createCollection("shiyanlou2", { capped : 1, autoIndexId : 1, size : 6142800, max : 10000 } ) #带参数
{ "ok ": 1 }
capped:类型为 Boolean,如果为 true 则创建一个固定大小的集合,当其条目达到最大时可以自动覆盖以前的条目。在设置其为 true 时也要指定参数大小;
autoIndexId:类型为 Boolean,默认为 false,如果设置为 true,则会在 _id 字段上自动创建索引;
size:如果 capped 为 true 则需要指定,指定参数的最大值,单位为 byte;
max:指定最大的文档数。

db.collection.drop()

更新

1.db.collection.update(, , {upsert:, multi:,writeConcern:})

db.collection.update({"id":2}, {"id":5}) # id为2的数据将被更新为{id:5},其它字段被抛弃
db.collection.update({"id":2}, {$set:{age:20}}) # 只把age字段更新为20其它字段不变,如果没有这个字段则添加这个字段
db.collection.update({"id":3},{$set:{age:30}}, {"upsert":true}) #如果不存在该条数据则新增一条
# multi多行更新,multi要和$set组合使用
db.collections.update({"age":{$gt:20}}, {$set:{"salary":200}},{"multi":true})

  1. db.collection.save({_id:ObjectId(),NEW_DATA}) # 替换已存在记录

删除

db.COLLECTION_NAME.remove(DELECTION_CRITERIA)

createCollection():创建集合
db.COLLECTION.drop():删除集合
db.COLLECTION_NAME.insert(document):插入文档
db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA):更新文档
db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA}):替换已存在的文档
db.COLLECTION_NAME.remove(DELECTION_CRITERIA):删除文档

标签:name,MongoDB,数据库,db,id,文档,集合,基本操作,age
From: https://www.cnblogs.com/baiyutang7/p/16742592.html

相关文章

  • Python操作数据库
    python使用MySQL主要有两个模块,pymysql(MySQLdb)和SQLAchemy。pymysql(MySQLdb)为原生模块,直接执行sql语句,其中pymysql模块支持python2和python3,MySQLdb只支持python2,两者......
  • Oracle数据库用户权限分析
    文档课题:Oracle数据库用户权限分析.1、查询权限普通用户查询自己所拥有的所有权限.>showuserUSERis"LEO">select*fromsession_privs;PRIVILEGE--------------------......
  • NoSQL数据库与关系数据库的比较
    SQL,即结构化查询语言,是传统的关系型数据库的查询语言。SQL数据库能够通过简化CRUD操作,处理数据库中的结构化数据。此处的CRUD代表了创建(create)、检索(或读取,retrieve、r......
  • java连接数据库和MP自动生成
    java连接数据库一.操作步骤1.1点击数据库添加1.2选择对应的数据库软件1.3填写相关信息ps......
  • Python数据库编程
    1.什么是MySQLdb?2.如何连接数据库?3.如何创建数据库表?4.如何执行数据插入?5.如何执行数据库查询操作?6.如何更新数据库数据?7.如何删除数据库数据?8.如何使用数据库事......
  • Django项目中的数据库引擎的修改注意点以及级联删除的设置
    2022-09-29问题描述:在“setting.py”的配置文件中修改数据库引擎中,将系统默认的"sqlite3"后缀改为了“sql”。出现问题。原因分析:  问题查看: 修改后:  ----......
  • MySQL高级 4:数据库设计
    关系型数据库建议在E-R模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制定出表结构,这是项目开始的第一步在开发中有很多设计数据库的软件,常用的如powerdes......
  • SUSE Linux下安装DB2数据库
    1创建安装目录mkdir-p/opt/db2v11.1/cd/opt/db2v11.1/2解压软件包[[email protected]]#tarxfv11.1_linuxx64_expc.tar.gz3开始安装软件包[root@localhost~]#......
  • Mongodb图形化工具Mongo Management Studio的初步使用记录
    工具官网下载地址:https://mms.litixsoft.de/ 使用免费版:  创建连接(可以测试下是否能连接) 可连接 点开数据库,点击对应集合 可以看到当前集合的存储数据......
  • git基本操作
    1.安装git之后,打开gitbash。2.打开之后可以查看一下git的版本git--version,还有git的用户和邮箱配置,使用gitconfig--globaluser.name和gitconfig--globaluser.em......