Linux オペレーティング システムに詳しい友人は、Linux にはデータを便利に処理するために使用できるパイプラインがあることを知っているはずです。 MongoDB バージョン 2.2 では、新しいデータ集約フレームワークも導入されており、ドキュメントは複数のノードで構成されるパイプラインを通過できます。各ノードには、ドキュメントのグループ化、ドキュメントのフィルタリングなどの独自の機能があります。各ノードは一連のドキュメントを受け入れます。 、これらのドキュメントに対して何らかの型変換を実行し、変換されたドキュメントを次のノードに渡します。最後のノードは結果をクライアントに返します。この記事では、まずいくつかの基本的なパイプライン演算子を見ていきます。
$match
$match を使用してドキュメントをフィルタリングできます。フィルタリングが完了したら、前に紹介したクエリ演算子を使用してドキュメントのサブセットに対してデータ集計操作を実行できます。たとえば、次のように、コレクション内で作成者が「Du Fu」であるすべてのドキュメントを取得します。
db.sang_collect.aggregate({$match:{author:"杜甫"}})
実際の使用では、$match をパイプラインの前に置くのが最善です。これにより、同時に、プロジェクションとグループ化の前に $match を実行するときにインデックスを使用することもできます。
$project
基本的な使い方
$project は、次のように目的のフィールドを抽出するために使用できます:
db.sang_collect.aggregate({$project:{title:1,_id:0}})
1 はこのフィールドが必要であることを意味し、0 はこのフィールドが不要であることを意味し、返されたフィールドの名前を変更することもできます
db.sang_collect.aggregate({$project:{"articleTitle":"$title"}})
ただし、元のフィールドにインデックスがある場合、名前を変更したフィールドにはインデックスが存在しないため、注意が必要な問題があります。名前を変更する前にインデックスを使用することをお勧めします。
数式
数式は、一連の値を加算、減算、乗算、除算して剰余を求めるために使用できます。たとえば、私のデータ構造は次のとおりです。
{ "_id" : ObjectId("59f841f5b998d8acc7d08863"), "orderAddressL" : "ShenZhen", "prodMoney" : 45.0, "freight" : 13.0, "discounts" : 3.0, "orderDate" : ISODate("2017-10-31T09:27:17.342Z"), "prods" : [ "可乐", "奶茶" ] }
注文の合計コストは次のとおりです。クエリは次のとおりです:
db.sang_collect.aggregate({$project:{totalMoney:{$add:["$prodMoney","$freight"]}}})
実際の支払い手数料は、次のように合計手数料から割引を差し引いたものです:
db.sang_collect.aggregate({$project:{totalPay:{$subtract:[{$add:["$prodMoney","$freight"]},"$discounts"]}}})
prodMoney と運賃と割引の積を計算するなど、3 つの無意味な操作を実行してみましょう。 :
db.sang_collect.aggregate({$project:{test1:{$multiply:["$prodMoney","$freight","$discounts"]}}})
別の例は、次のように $prodMoney と $freight の商を求めることです:
db.sang_collect.aggregate({$project:{test1:{$pide:["$prodMoney","$freight"]}}})
別の例は、次のように $freight を使用して $prodMoney を法算することです:
db.sang_collect.aggregate({$project:{test1:{$mod:["$prodMoney","$freight"]}}})
加算と乗算の両方で複数のパラメーターを受け取ることができます、残りはすべて 2 つのパラメーターを受け取ります。
日付式
日付式は、次のように日付型から年、月、日、週、時、分、秒などの情報を抽出できます:
db.sang_collect.aggregate({$project:{"年份":{$year:"$orderDate"},"月份":{$month:"$orderDate"},"一年中第几周":{$week:"$orderDate"},"日期":{$dayOfMonth:"$orderDate"},"星期":{$dayOfWeek:"$orderDate"},"一年中第几天":{$dayOfYear:"$orderDate"},"时":{$hour:"$orderDate"},"分":{$minute:"$orderDate"},"秒":{$second:"$orderDate"},"毫秒":{$millisecond:"$orderDate"},"自定义格式化时间":{$dateToString:{format:"%Y年%m月%d %H:%M:%S",date:"$orderDate"}}}})
実行結果は次のとおりです:
{ "_id" : ObjectId("59f841f5b998d8acc7d08861"), "年份" : 2017, "月份" : 10, "一年中第几周" : 44, "日期" : 31, "星期" : 3, "一年中第几天" : 304, "时" : 9, "分" : 27, "秒" : 17, "毫秒" : 342, "自定义格式化时间" : "2017年10月31 09:27:17" }
$dayOfWeekが返されますこれは週であり、1 は日曜日を意味し、7 は土曜日を意味し、$week は今週が今年の週であることを意味し、0 から数えます。 $dateToString は MongoDB3.0 以降の機能です。次の書式設定文字もあります:
文字 | 意味 | 値の範囲 |
---|---|---|
%Y | 年(4桁、ゼロ埋め) | 0000-9999 |
%m | 月 (2 桁、ゼロ埋め) | 01-12 |
%d | 日 (2 桁、ゼロ埋め) | 01-31 |
%H | 時 2 桁、ゼロ埋め) | 00-60 |
%L | ミリ秒 (3 桁、ゼロ埋め) | 000-999 |
%j | 通算日 (3 桁、ゼロ埋め) | 001 -366 |
%w | 曜日 (1-日曜日、7-土曜日) | 1-7 |
%U | 年の週 (2 桁、ゼロ埋め込み) | 00- 53 |
字符串表达式字符串表达式中有字符串的截取、拼接、转大写、转小写等操作,比如我截取orderAddressL前两个字符返回,如下: db.sang_collect.aggregate({$project:{addr:{$substr:["$orderAddressL",0,2]}}}) 再比如我将orderAddressL和orderDate拼接后返回: db.sang_collect.aggregate({$project:{addr:{$concat:["$orderAddressL",{$dateToString:{format:"--%Y年%m月%d",date:"$orderDate"}}]}}}) 结果如下: { "_id" : ObjectId("59f841f5b998d8acc7d08861"), "addr" : "NanJing--2017年10月31" } 再比如我将orderAddressL全部转为小写返回: db.sang_collect.aggregate({$project:{addr:{$toLower:"$orderAddressL"}}}) 再比如我将orderAddressL全部转为大写返回: db.sang_collect.aggregate({$project:{addr:{$toUpper:"$orderAddressL"}}}) 逻辑表达式想要比较两个数字的大小,可以使用$cmp操作符,如下: db.sang_collect.aggregate({$project:{test:{$cmp:["$freight","$discounts"]}}}) 如果第一个参数大于第二个参数返回正数,第一个参数小于第二个则返回负数,也可以利用$strcasecmp来比较字符串(中文无效): db.sang_collect.aggregate({$project:{test:{$strcasecmp:[{$dateToString:{format:"..%Y年%m月%d",date:"$orderDate"}},"$orderAddressL"]}}}) 至于我们之前介绍的$eq/$ne/$gt/$gte/$lt/$lte等操作符在这里一样是适用的。另外还有$and、$or、$not等表达式可用,以$and为例,如下: db.sang_collect.aggregate({$project:{test:{$and:[{"$eq":["$freight","$prodMoney"]},{"$eq":["$freight","$discounts"]}]}}}) $and中的每个参数都为true时返回true,$or则表示参数中有一个为true就返回true,$not则会对它的参数的值取反,如下: db.sang_collect.aggregate({$project:{test:{$not:{"$eq":["$freight","$prodMoney"]}}}}) 另外还有两个流程控制语句,如下: db.sang_collect.aggregate({$project:{test:{$cond:[false,"trueExpr","falseExpr"]}}}) $cond第一个参数如果为true,则返回trueExpr,否则返回falseExpr. db.sang_collect.aggregate({$project:{test:{$ifNull:[null,"replacementExpr"]}}}) $ifNull第一个参数如果为null,则返回replacementExpr,否则就返回第一个参数。 以上内容就是MongoDB管道操作符部分介绍,希望能帮助到大家。 |
以上がMongoDB パイプライン オペレーターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
