4、クラッド
mongo データベースは通常のリレーショナル データベースと同じで、追加、削除、変更、確認が最も基本的な操作であり、名前が異なるだけです。
SQL の用語/概念 | MongoDB の用語/概念 | 説明 |
---|---|---|
データベース | データベース | データベース |
テーブル | コレクション | データベーステーブル/コレクション |
行 | 書類 | データ記録行/文書 |
桁 | 分野 | データフィールド/フィールド |
索引 | 索引 | 索引 |
テーブル結合 | テーブル結合、MongoDB はサポートしていません | |
主キー | 主キー | 主キー、MongoDB は _id フィールドを主キーとして自動的に設定します |
4.1 ドキュメントの挿入
ドキュメントの挿入の本質は、コレクションにデータを挿入することです。これはリレーショナル データベースの観点から説明されます。向数据表中插入数据
语法
#単一挿入
db.collection_Name.insertOne(document)
#複数の挿入
db.collection_Name.insertMany([document])
例:
#单个插入
db.test1.insertOne({name:"mongo",type:1,value:1})
#多个插入
db.test1.insertMany([
{
name:"mysql",
type:2,
value:2
},{
name:"oracle",
type:3,
value:3
},{
name:"nosql",
type:4,
value:4
},{
name:"xiaoming",
sex:"男",
age:20,
address:"江苏省南京市浦口区××××××苑×××××单元×××××楼×××××××户"
}
]
)
# 查看集合中的文档
db.test1.find()
4.2 ドキュメントの更新
ドキュメントの更新の本質は、ドキュメント内のデータを更新することです。これはリレーショナル データベースの観点から説明されます。更新数据表中的数据
``構文:`
#単一行の更新
db.test1.updateOne(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
#複数行の更新
db.test1.updateMany(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
パラメータの説明
- query : 更新のクエリ条件。SQL 更新クエリの where と同様です。
- update : 更新されたコンテンツは、SQL 更新クエリの背後にあるセットとしても理解できます。
- upsert : オプション。デフォルトは false (更新条件が存在しない場合は挿入しません)、挿入の場合は true、つまり更新条件が存在しない場合にデータを挿入します。
- multi : オプション。デフォルトは false です。最初に見つかったレコードのみが更新されます。このパラメータが true の場合、条件に従って見つかった複数のレコードがすべて更新されます。
- writeConcern : オプション。スローされる例外のレベル。
例:
-
最初のレコードを挿入せずに更新します
db.test1.updateOne({name:"mongo"},{$set:{ type:99}})
- 条件に一致するすべてのドキュメントを挿入せずに更新します
db.test1.updateMany({name:"redis"},{$set:{
type:111}})
4.3 ドキュメントのクエリ
ドキュメントのクエリの本質は、リレーショナル データベースの観点から解釈できるドキュメント内のデータをクエリすることです。查询数据表中的数据
语法
db.collection_name.find()
4.3.1 一般的なクエリ
一般的なクエリ:特定の条件に従って検索します
例:
#查找集合中全部的文档
db.test1.find()
#查找名字为mongo的文档
db.test1.find({name:"mongo"})
#查找值为空的文档
db.test1.find({
value:null})
4.3.2 ファジークエリ
データベース内のデータを操作するとき、ファジールックアップを使用することがよくありますが、ファジールックアップはmongoでもサポートされており、使用する必要があります。$regex
例
#查找名字中包含m的文档
db.test1.find({name:{$regex:/m/}})
#查找名字以m开头的文档
db.test1.find({name:{$regex:/^m/}})
4.3.3 条件クエリ
データベース内のデータを操作する際に条件検索を使うことが多いですが、mongoでも条件検索がサポートされています。
例
#查询类型不为111的文档
db.test1.find({type:{$ne:111}})
#查询类型不为111且名字已m开头的文档
db.test1.find({
type:{$ne:111},name:{$regex:/^m/}})
#插叙名字为mongo或者type为空的文档
db.test1.find({
$or:
[
{name:"mongo"},
{
type:null}
]
})
#插叙名字为mongo或者type为空且value为1的文档
db.test1.find({
$or:
[
{name:"mongo"},
{
type:null}
],
value:1
})
4.4.4 射影クエリ
MongoDB のプロジェクションでは、ドキュメントのすべてのフィールドを直接クエリするのではなく、指定されたフィールドをクエリします。1 の記号が表示され、0 の記号が非表示になります
语法
db.ollection_name.find({
file:1,file2:0})
例
#插叙名字为mongo或者type为空且value为1的文档,要求只展示名字和类型
db.test1.find({
$or:
[
{name:"mongo"},
{
type:null}
],
value:1
},{_id:0,name:1,type:1})
4.4.5 制限クエリ
mongo の制限クエリは、クエリされるデータの量を制限することです。
语法
db.test1.find().limit(count)
パラメータの説明
count: 制限する項目の数
例:
#限制输出2条
db.test1.find().limit(2)
4.4.6 クエリをスキップする
mongo のジャンプ クエリとは、指定された数のアイテムをスキップし、条件を満たすドキュメントを検索することを指します。
语法
db.test1.find().skip(count)
パラメータの説明
count: スキップされた項目の数
例
#跳过前两条
db.test1.find().skip(2)
#跳过前两条查找,并且返回3条数据,
db.test1.find().skip(2).limit(3)
#跳过前两条查找,并且返回3条数据
db.test1.find().limit(3).skip(2)
集計クエリでは、limitとskipには順序関係があります。
4.4.7 ソートクエリ
クエリの並べ替えとは、クエリの結果を並べ替えることを指します。1 は昇順、-1 は降順です。
语法
db.COLLECTION_NAME.find().sort({
KEY:1})
例
db.test1.find().sort({name:-1})
4.4. ドキュメントの削除
mongo でのドキュメントの削除は、コレクション内のデータを削除することを指します
语法
単一削除
db.collection.deleteOne(filter, options)
複数の削除
db.collection.deleteMany(filter, options)
パラメータの説明
- filter パラメータは、削除する必要があるドキュメントの条件を指定するために使用されます。
- options パラメーターを使用して、いくつかの追加オプションを指定できます。
例
db.test1.deleteOne({
type:null})
db.test1.deleteMany({
type:null})