ホームページ データベース mysql チュートリアル MongoDB の一般的なクエリ操作の概要 (コード付き)

MongoDB の一般的なクエリ操作の概要 (コード付き)

Mar 23, 2019 pm 04:39 PM
mongodb

この記事では、MongoDB の一般的な Query 操作の概要 (コード付き) を紹介します。これには一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。

前書き: 使用した視覚化ツールは Studio 3T、公式 Web サイト -->https://studio3t.com/
バージョン番号: MongoDB シェル バージョン v3.4.2
使用方法: https :/ /blog.csdn.net/weixin_...
注目すべき点: 演算子に注目してください。
検索方法: このページで Ctrl F を押し、キーワードを入力して検索します。

1. よく使用されるクエリ
操作の便宜上、ドキュメントを挿入する前にすべてのドキュメントを削除してください。元のデータ ( プロジェクトでは慎重に操作してください! ):

db.getCollection("inventory").deleteMany({})
ログイン後にコピー

0. すべてのドキュメントを表示

db.getCollection("inventory").find({})
ログイン後にコピー

1. オブジェクトsearch
1.1. 元のデータ

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
ログイン後にコピー
ログイン後にコピー

1.2. size.h が 14、size.w が 21、size.uom が cm

に等しいドキュメントを検索します。
db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
ログイン後にコピー

1.3. size.uom が in

db.inventory.find( { "size.uom": "in" } )
ログイン後にコピー

のドキュメントと等しいことを確認します。 注: 個々のオブジェクトのプロパティを検索するときは、必ず引用符を含めてください。

1.4. オブジェクト

db.inventory.find(
   { status: "A" },
   { item: 1, status: 1, "size.uom": 1 }
)
ログイン後にコピー

1 で指定されたフィールドを検索して返します。1.5. オブジェクト

db.inventory.find(
   { status: "A" },
   { "size.uom": 0 }
)
ログイン後にコピー
2 で指定されたフィールドを検索してフィルターします。配列検索
2.1. 元のデータ

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
2.2. tags=["red", "blank"]

db.inventory.find( { tags: ["red", "blank"] } )
ログイン後にコピー
を持つドキュメントの検索 注: そうではありません。包含関係、つまり、タグ ["red"、"blank"、"plain"] は含まれません

2.3. タグに red

db.inventory.find( { tags: "red" } )
ログイン後にコピー
## が含まれるドキュメントを検索します#注意: このように db.inventory.find( { tags: ["red"] } ) を記述することはできません。つまり、タグが red

3 であるドキュメントを検索することになります。配列に含まれるオブジェクトを検索
3.1. 元のデータ

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

3.2. 条件を満たす配列内のオブジェクトを検索します (含まれていません)。配列内にオブジェクトが存在する限り条件を満たす場合、配列全体が返されます。

db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
ログイン後にコピー

フィールドの順序に厳密に従う必要があります。フィールドの順序が変更されると、 が見つかりません

db.inventory.find( { "instock": { qty: 5, warehouse: "A" } } )
ログイン後にコピー

3.3. 配列内の要素オブジェクトを見つけます。要素オブジェクトの qty=5 またはwarehouse=A

db.inventory.find( { "instock.qty": 5, "instock.warehouse": "A" } )
ログイン後にコピー

3.4. が 1 つあります。配列内のオブジェクトを取得し、オブジェクトの特定の属性を返します

db.inventory.find( { status: "A" }, { item: 1, status: 1, "instock.qty": 1 } )
ログイン後にコピー

4. 通常の検索
4.1. 元のデータ

db.inventory.insertMany( [
  { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notebook", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
ログイン後にコピー

4.2. 指定されたフィールドをクエリして返します
status=A の条件で、_id、item、status フィールドを返す

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
ログイン後にコピー

Result:

{ "_id" : ObjectId("5c91cd53e98d5972748780e1"), 
    "item" : "journal", 
    "status" : "A"}
// ----------------------------------------------
{ "_id" : ObjectId("5c91cd53e98d5972748780e2"), 
    "item" : "notebook", 
    "status" : "A"}
// ----------------------------------------------
{ "_id" : ObjectId("5c91cd53e98d5972748780e5"), 
    "item" : "postcard", 
    "status" : "A"}
ログイン後にコピー

4.3. 4.2 から、_id が自動的に引き継がれることがわかり、次のように削除されます。
ID のない (削除された) クエリ:

db.inventory.find( { status: "A" }, { item: 1, status: 1, _id: 0 } )
ログイン後にコピー

注: 他のフィールドを保持したままフィルターで除外できる ID に加えて、他のフィールド1
を書き込むと同時に 0 にすることはできません。例:

db.inventory.find( { status: "A" }, { item: 1, status: 0 } )
ログイン後にコピー

はエラーを報告します

MongoDB の一般的なクエリ操作の概要 (コード付き)

4.4。特定のフィールドを除外し、他のフィールドを返す

db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
ログイン後にコピー

5. null または存在しないキーを検索
5.1. 元のデータ

db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])
ログイン後にコピー
ログイン後にコピー

5.2. item が存在するドキュメントを検索null、または item

db.inventory.find( { item: null } )
ログイン後にコピー

2 を含まないドキュメント。演算子
1、$lt 未満未満
1.1、元のデータ

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
ログイン後にコピー
ログイン後にコピー

1.2、「size.h」が 15 未満のドキュメント コレクションを検索します

db.inventory.find( { "size.h": { $lt: 15 } } )
ログイン後にコピー

1.3. $lt を AND で使用します
size.h が 15 未満であるドキュメントを検索します。 .uom が入っており、ステータスは D

db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )
ログイン後にコピー

2.$lte 未満は
#2.1 以下、元のデータ

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

2.2 です。 instock.qty が 20 以下のドキュメントを検索し、配列内の 1 つのオブジェクトが条件を満たしている限り、配列全体を返します。

db.inventory.find( { 'instock.qty': { $lte: 20 } } )
ログイン後にコピー

3、$gt が以上
3.1、元のデータ

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

3.2、dim_cmが25より大きいドキュメントを検索

db.inventory.find( { dim_cm: { $gt: 25 } } )
ログイン後にコピー

注: 25を超える要素の配列が含まれている限り、すべて修飾されます

3.3. dim_cm が 15 より大きい、20 未満、または 15 より大きく 20 未満の両方であるドキュメントを検索します。

db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )
ログイン後にコピー

3.4、dim_cm が 22 より大きく、かつ 22 より大きいドキュメントを検索します。 30 未満 (配列のすべての要素を判定するのではなく、配列の特定の要素が 22 より大きく 30 未満であるかどうかを判定します)

db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )
ログイン後にコピー

3.5. 配列の位置に応じて検索
dim_cm の second 要素が 25 を超えるドキュメントを検索

db.inventory.find( { "dim_cm.1": { $gt: 25 } } )
ログイン後にコピー

4, $size 配列の長さに応じて検索
タグを検索 長さ 3

db.inventory.find( { "tags": { $size: 3 } } )
ログイン後にコピー

5 のドキュメント、$gte は
#5.1 以上、元のデータ

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

5.2、配列の最初の要素を検索します 数量 (オブジェクト) が 20

db.inventory.find( { 'instock.0.qty': { $gte: 20 } } )
ログイン後にコピー

6 以上であるドキュメントのコレクション $elemMatch オブジェクト属性の一致
6.1. 検索対象qty=5、warehouse="A " オブジェクトの配列を取得し、ドキュメント コレクション

db.inventory.find( { "instock": { $elemMatch: { qty: 5, warehouse: "A" } } } )
ログイン後にコピー

6.2 を返します。配列内で qty が 10 より大きく、 未満であるドキュメント コレクションを見つけます。 20

に等しい
db.inventory.find( { "instock": { $elemMatch: { qty: { $gt: 10, $lte: 20 } } } } )
ログイン後にコピー

如果不使用 $elemMatch 的话,就表示 qty 大于 10 或者小于等于 20,官方文档意思是,不在数组的某一个元素找 既满足条件 A 又满足条件 B 的 qty,而是在数组的所有元素上找,满足条件 A 或满足条件 B 的 qty

db.inventory.find( { "instock.qty": { $gt: 10,  $lte: 20 } } )
ログイン後にコピー

7、$slice 返回数组特定位置的元素
7.1、原数据

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

7.2、查找并返回 tags 数组的最后一个元素

db.inventory.find( { item: "journal" }, { item: 1, qty: 0, tags: { $slice: -1 } } )
ログイン後にコピー

结果:

{ 
    "_id" : ObjectId("5c91dce5e98d5972748780e6"), 
    "item" : "journal", 
    "tags" : [
        "red"
    ]
}
ログイン後にコピー

8、$type 返回指定类型的元素
8.1、原数据

db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])
ログイン後にコピー
ログイン後にコピー

8.2、返回 null 类型的数据

db.inventory.find( { item : { $type: 10 } } )
ログイン後にコピー

类型如下:

MongoDB の一般的なクエリ操作の概要 (コード付き)

详细文档请看:https://docs.mongodb.com/manu...

9、$exists 返回存在/不存在的键
查找不存在 item 键的数据

db.inventory.find( { item : { $exists: false } } )
ログイン後にコピー

10、$all 包含
10.1、原数据

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

10.2、查找 tags 数组包含 ["red", "blank"] 的文档

db.inventory.find( { tags: { $all: ["red", "blank"] } } )
ログイン後にコピー

综上:
数组用的:$all$size$slice
对象用的:$elemMatch

Query查询的详细文档请看:https://docs.mongodb.com/manu...
Operator的详细文档请看:https://docs.mongodb.com/manu...

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的mongodb视频教程栏目!

以上がMongoDB の一般的なクエリ操作の概要 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

net4.0の用途は何ですか net4.0の用途は何ですか May 10, 2024 am 01:09 AM

.NET 4.0 はさまざまなアプリケーションの作成に使用され、オブジェクト指向プログラミング、柔軟性、強力なアーキテクチャ、クラウド コンピューティングの統合、パフォーマンスの最適化、広範なライブラリ、セキュリティ、スケーラビリティ、データ アクセス、モバイルなどの豊富な機能をアプリケーション開発者に提供します。開発サポート。

DebianでMongoDB自動拡張を構成する方法 DebianでMongoDB自動拡張を構成する方法 Apr 02, 2025 am 07:36 AM

この記事では、自動拡張を実現するためにDebianシステムでMongodbを構成する方法を紹介します。主な手順には、Mongodbレプリカセットとディスクスペース監視のセットアップが含まれます。 1。MongoDBのインストール最初に、MongoDBがDebianシステムにインストールされていることを確認してください。次のコマンドを使用してインストールします。sudoaptupdatesudoaptinstinstall-yymongodb-org2。mongodbレプリカセットMongodbレプリカセットの構成により、自動容量拡張を達成するための基礎となる高可用性とデータ冗長性が保証されます。 Mongodbサービスを開始:Sudosystemctlstartmongodsudosys

DebianでMongodbの高可用性を確保する方法 DebianでMongodbの高可用性を確保する方法 Apr 02, 2025 am 07:21 AM

この記事では、Debianシステムで非常に利用可能なMongoDBデータベースを構築する方法について説明します。データのセキュリティとサービスが引き続き動作し続けるようにするための複数の方法を探ります。キー戦略:レプリカセット:レプリカセット:レプリカセットを使用して、データの冗長性と自動フェールオーバーを実現します。マスターノードが失敗すると、レプリカセットが自動的に新しいマスターノードを選択して、サービスの継続的な可用性を確保します。データのバックアップと回復:MongoDumpコマンドを定期的に使用してデータベースをバックアップし、データ損失のリスクに対処するために効果的な回復戦略を策定します。監視とアラーム:監視ツール(プロメテウス、グラファナなど)を展開して、MongoDBの実行ステータスをリアルタイムで監視し、

MongoDBデータベースパスワードを表示するNAVICATの方法 MongoDBデータベースパスワードを表示するNAVICATの方法 Apr 08, 2025 pm 09:39 PM

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

Centos Mongodbバックアップ戦略とは何ですか? Centos Mongodbバックアップ戦略とは何ですか? Apr 14, 2025 pm 04:51 PM

MongoDB効率的なバックアップ戦略の詳細な説明CENTOSシステムでは、この記事では、データセキュリティとビジネスの継続性を確保するために、CENTOSシステムにMongoDBバックアップを実装するためのさまざまな戦略を詳細に紹介します。 Dockerコンテナ環境でのマニュアルバックアップ、タイミング付きバックアップ、自動スクリプトバックアップ、バックアップメソッドをカバーし、バックアップファイル管理のベストプラクティスを提供します。マニュアルバックアップ:MongoDumpコマンドを使用して、マニュアルフルバックアップを実行します。たとえば、Mongodump-Hlocalhost:27017-U Username-P Password-Dデータベース名-O/バックアップディレクトリこのコマンドは、指定されたデータベースのデータとメタデータを指定されたバックアップディレクトリにエクスポートします。

Debian Mongodbでデータを暗号化する方法 Debian Mongodbでデータを暗号化する方法 Apr 12, 2025 pm 08:03 PM

DebianシステムでMongoDBデータベースを暗号化するには、次の手順に従う必要があります。ステップ1:MongoDBのインストール最初に、DebianシステムがMongoDBをインストールしていることを確認してください。そうでない場合は、インストールについては公式のMongoDBドキュメントを参照してください:https://docs.mongodb.com/manual/tutorial/install-mongodb-onedbian/-step 2:暗号化キーファイルを作成し、暗号化キーを含むファイルを作成し、正しい許可を設定します。

Pi Coinのメジャーアップデート:Pi Bankが来ています! Pi Coinのメジャーアップデート:Pi Bankが来ています! Mar 03, 2025 pm 06:18 PM

Pinetworkは、革新的なモバイルバンキングプラットフォームであるPibankを立ち上げようとしています! Pinetworkは本日、Pibankと呼ばれるElmahrosa(Face)Pimisrbankのメジャーアップデートをリリースしました。これは、従来の銀行サービスと、フィアット通貨の原子交換と暗号通貨の原子交換を実現します(resuptocursisを使用するなど、聖職者のような聖職者など、 DC)。ピバンクの魅力は何ですか?見つけましょう!ピバンクの主な機能:銀行口座と暗号通貨資産のワンストップ管理。リアルタイムトランザクションをサポートし、生​​物種を採用します

MongoDBおよびリレーショナルデータベース:包括的な比較 MongoDBおよびリレーショナルデータベース:包括的な比較 Apr 08, 2025 pm 06:30 PM

MongoDBおよびリレーショナルデータベース:詳細な比較この記事では、NOSQLデータベースMongoDBと従来のリレーショナルデータベース(MySQLやSQLServerなど)の違いを詳細に調べます。リレーショナルデータベースは、行と列のテーブル構造を使用してデータを整理しますが、MongoDBは柔軟なドキュメント指向モデルを使用して、最新のアプリケーションのニーズをより適切に適しています。主にデータ構造を区別します。リレーショナルデータベースは、事前定義されたスキーマテーブルを使用してデータを保存し、テーブル間の関係は一次キーと外部キーを通じて確立されます。 MongoDBはJSONのようなBSONドキュメントを使用してコレクションに保存します。各ドキュメント構造は、パターンのないデザインを実現するために独立して変更できます。アーキテクチャデザイン:リレーショナルデータベースは、事前に定義された固定スキーマが必要です。 Mongodbサポート

See all articles