記事ディレクトリ
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)}})