MongoDBの基本構文

1.はじめに

MongoDBは、分散ファイルストレージに基づくデータベースです。C ++言語で書かれています。WEBアプリケーションにスケーラブルで高性能なデータストレージソリューションを提供するように設計されています。
MongoDBは、リレーショナルデータベースと非リレーショナルデータベースの製品であり、非リレーショナルデータベースの中で最も用途が広く、リレーショナルデータベースに最も似ています。
MongoDBはデータをドキュメントとして保存し、データ構造はキーと値(key => value)のペアで構成されます。MongoDBドキュメントは、JSONオブジェクトのBSON形式に似ています。フィールド値には、他のドキュメント、配列、およびドキュメント配列を含めることができます。

ここに写真の説明を挿入

MongoDBの機能

MongoDBの最大の機能は、サポートするクエリ言語が非常に強力であるということです。その構文は、オブジェクト指向のクエリ言語に少し似ています。リレーショナルデータベースの単一テーブルクエリと同様の機能のほとんどをほぼ実現でき、データの
インデックス作成もサポートしますこれは、無料のパターンを備えたコレクション指向のドキュメントベースのデータベースです。
具体的な機能は次のとおりです。
(1)コレクション指向のストレージ、オブジェクトタイプデータの保存が簡単
(2)フリーモード
(3)動的クエリのサポート
(4)内部オブジェクトを含む完全なインデックスのサポート
(5)レプリケーションと障害回復のサポート
(6)大きなオブジェクト(ビデオなど)を含む効率的なバイナリデータストレージを使用します
(7)フラグメントを自動的に処理してクラウドコンピューティングレベルのスケーラビリティをサポートします
(8)Python、PHP、Ruby、Java、C、C#、Javascript、Perl、およびC ++言語ドライバー
(9)ファイルの保存形式はBSON(JSONの拡張)です。

MongoDBアーキテクチャ

ここに写真の説明を挿入

MongoDBデータタイプ

ここに写真の説明を挿入
基本データタイプ

null:nullまたは存在しないフィールドを表すために使用されます。{"X":null}
ブール型:
ブール型にはtrueとfalseの2つの値があります。{"x":true}
値:
シェルはデフォルトで64を浮動小数点型として使用します。数値。{"X":3.14}または{"x":3}。
浮動小数点タイプ:
整数値の場合、NumberInt(4バイトの符号付き整数)またはNumberLong(8バイトの符号付き整数)、{"x":NumberInt( "3")}、{"x":NumberLong( " 3 ")}
文字列:
UTF-8文字列は文字列タイプのデータとして表すことができます。{" x ":" Hehe "}
日付:
日付は新しい時代から経過したミリ秒数として保存され、タイムゾーンは保存されません。{ "X":new Date()}
正規式:
クエリを実行するときは、修飾として正規式を使用します。構文はJavaScript正規式と同じです。{"x":/ [abc] /}
配列:
データリストまたはデータセットは配列として表すことができます。{"x":["a"、 "b"、 "c"]}
埋め込みドキュメント:
ドキュメントは他のドキュメントとネストでき、ネストされたドキュメントは値として扱われます{"x" :{"Y":3}}
オブジェクトID:
オブジェクトIDは12バイトの文字列であり、ドキュメントの一意のID(プライマリキー)です。{"x":objectId()}
バイナリデータ:
バイナリデータは任意の単語ですセクションの文字列。シェルで直接使用することはできません。utf以外の文字をデータベースに保存する場合は、バイナリデータが唯一の方法です。
コード:
任意のJavaScriptコードをクエリとドキュメントに含めることができます{"x":function(){/.../}}

次に、MongoDBをインストールします

Dockerを使用してインストールする

# 拉取镜像
 docker pull mongo:3.6
 # 查看镜像
 docker images
 # 创建容器
docker run --name mongo -v ~/docker/mongo:/data/db -p 27017:27017 -d mongo:3.6  
 # 查看容器
 docker ps 
 # 进入容器
 docker exec -it mongo /bin/bash

構成ファイルを変更して、リモート接続を開きます

docker cp mongo:/etc/mongod.conf.orig /data/

将其中的
bindIp: 127.0.0.1
注释掉# bindIp: 127.0.0.1
或者改成bindIp: 0.0.0.0
即可开启远程连接



docker cp /data/mongod.conf.orig mongo:/etc/mongod.conf.orig 

ここに写真の説明を挿入
ここに写真の説明を挿入
グラフィカルツールを使用して接続する
ここに写真の説明を挿入

三、文法

概要:
コレクション名はテーブル名と同等です

# 插入
db.集合名称.insert(数据)
#查找全部
db.集合名称.find()
#查询一个
db.集合名称.findOne({
    
    userid:'01'})
db.集合名称.find().limit(3)
# 修改文档
db.集合名称.update(条件,修改后数据)
# 删除全部文档
db.集合名称.remove({
    
    })
# 删除指定文档
db.集合名称.remove({
    
    _id:'1'})
# 统计条数
db.集合名称.count()
# 根据条件统计条数
db.集合名称.count({
    
    content:'内容'})
# 模糊查询   MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:/模糊查询字符串/
db.集合名称.find({
    
    字段名称:/bug/})
# 匹配content中以‘太’开头的数据
db.集合名称.find({
    
    字段名称:/^/})
# 大于 等于 小于
使用这些需要单独将该值再放入一个{
    
    }中
db.集合名称.find({
    
     字段名称 : {
    
     $gt: value }}) // 大于: field > value
db.集合名称.find({
    
     字段名称 : {
    
     $lt: value }}) // 小于: field < value
db.集合名称.find({
    
     字段名称 : {
    
     $gte: value }}) // 大于等于: field >= value
db.集合名称.find({
    
     字段名称 : {
    
     $lte: value }}) // 小于等于: field <= value
db.集合名称.find({
    
     字段名称 : {
    
     $ne: value }}) // 不等于: field != value
//查询id字段在1和2
db.集合名称.find({
    
    字段名称:{
    
    $in:["1","2"]}})
//查询id字段不在1和2
db.集合名称.find({
    
    字段名称:{
    
    $nin:["1","2"]}})
//查询访问量大于等于1000 且小于2000的数据
db.集合名称.find({
    
    $and:[ {
    
    字段名称:{
    
    $gte:1000}} ,{
    
    字段名称:{
    
    $lt:2000} }]})
db.集合名称.find({
    
    $or:[ {
    
    字段名称:{
    
    $gte:1000}} ,{
    
    字段名称:{
    
    $lt:2000} }]})
//列值增长
db.集合名称.update({
    
    字段名称:"2"},{
    
    $inc:{
    
    visits:NumberInt(2)}})

1.データベースを選択して作成します

use 数据库名称   # 如果数据库不存在,就自动创建

例如 创建并使用spitdb
use spitdb

ここに写真の説明を挿入
ここに写真の説明を挿入

2.ドキュメントの挿入とクエリ

次のコマンドは、コレクションを自動的に作成します。これは、私たちがよくテーブルと呼ぶものです。

db.集合名称.insert(数据);   #  数据格式是BSON格式  
db.spit.insert({
    
    content:"java是第一编程语言",userid:"1011",nickname:"万能的张三",visits:NumberInt(902)})

ここに写真の説明を挿入
ここに写真の説明を挿入
すべてのデータを照会します。

ここに写真の説明を挿入
ここに写真の説明を挿入
クエリ結果に_idフィールドが表示され、データ形式はObjectID(234123as1234)で、MongoDBによって自動的に生成されます。挿入するIDを指定することもできますが、idフィールドは_idである必要があります。

db.spit.insert({
    
    _id:"1",content:"有个bug求解决",userid:"1012",nickname:"张三",visits:NumberInt(2020)});
db.spit.insert({
    
    _id:"2",content:"分析面试经验",userid:"1013",nickname:"李四",visits:NumberInt(1023)});
db.spit.insert({
    
    _id:"3",content:"想拿高薪私聊我",userid:"1013",nickname:"王五",visits:NumberInt(111)});
db.spit.insert({
    
    _id:"4",content:"嘿嘿嘿",userid:"1014",nickname:"赵六",visits:NumberInt(1223)});
db.spit.insert({
    
    _id:"5",content:"我太难了",userid:"1016",nickname:"周期",visits:NumberInt(1255)});

ここに写真の説明を挿入
ここに写真の説明を挿入

3.条件によるクエリ

//查询全部
db.spit.find()
//根据id查询   条件是bson格式
db.spit.find({
    
    _id:'1'})
//如果有多条记录返回,使用findOne命令只返回一条
db.spit.findOne({
    
    _id:'1'})

ここに写真の説明を挿入
ここに写真の説明を挿入

4.指定された数のデータを返します

ここに写真の説明を挿入

5.ドキュメントを変更します

db.spit.find({
    
    _id:'1'})

ここに写真の説明を挿入
ここに写真の説明を挿入

変更後は、このフィールドのみが保存されることに注意してください。

$ setを使用して指定されたフィールドを変更し、その後のコロンに注意してください:

db.spit.update({
    
    _id:'1'},{
    
    $set:{
    
    visits:NumberInt(20000)}})

6.ドキュメントを削除します

//删除文档
db.spit.remove({
    
    _id:'11'})

ここに写真の説明を挿入

7.統計

//统计条数
db.spit.count()
db.spit.count({
    
    visits:902})

ここに写真の説明を挿入
ここに写真の説明を挿入

8.ファジークエリ

//模糊查询
db.spit.find({
    
    content:/bug/})
db.spit.find({
    
    content:/^j/})

ここに写真の説明を挿入

9.より大きい、および、または、in、nin、inc

//访问量大于1000
db.spit.find({
    
    visits:{
    
    $gt:1000}})
//访问量小于1000
db.spit.find({
    
    visits:{
    
    $lt:1000}})
//访问量大于等于1000
db.spit.find({
    
    visits:{
    
    $gte:902}})
//访问量小于等于1000
db.spit.find({
    
    visits:{
    
    $lte:902}})
//访问量不等于1000
db.spit.find({
    
    visits:{
    
    $ne:902}})
//访问量等于1000
db.spit.find({
    
    visits:{
    
    $eq:902}})
//查询id字段在1和2
db.spit.find({
    
    _id:{
    
    $in:["1","2"]}})
//查询id字段不在1和2
db.spit.find({
    
    _id:{
    
    $nin:["1","2"]}})
//查询访问量大于等于1000 且小于2000的数据
db.spit.find({
    
    $and:[ {
    
    visits:{
    
    $gte:1000}} ,{
    
    visits:{
    
    $lt:2000} }]})
db.spit.find({
    
    $or:[ {
    
    visits:{
    
    $gte:1000}} ,{
    
    visits:{
    
    $lt:2000} }]})
//列值增长
db.spit.update({
    
    _id:"2"},{
    
    $inc:{
    
    visits:NumberInt(2)}})

おすすめ

転載: blog.csdn.net/DreamsArchitects/article/details/109352830