리눅스 운영체제에 익숙한 친구들은 리눅스에도 데이터를 편리하게 처리할 수 있는 파이프라인이 있다는 걸 알아야 합니다. 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은 이 필드를 원하지 않음을 의미하며 반환된 필드의 이름을 바꿀 수도 있습니다. 예를 들어, 제목은 다음과 같이 articleTitle로 변경됩니다.
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와 화물 및 할인의 곱을 계산하는 등 의미 없는 세 가지 작업을 수행해 보겠습니다. :
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"]}}})
덧셈과 곱셈 모두 여러 매개변수를 받을 수 있습니다. , 나머지는 모두 두 개의 매개변수를 받습니다.
날짜 표현식
날짜 표현식은 날짜 유형에서 다음과 같이 연, 월, 일, 주, 시, 분, 초 및 기타 정보를 추출할 수 있습니다.
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+의 기능입니다. 다음과 같은 형식 문자도 있습니다.
Character | Meaning | 값 범위 |
---|---|---|
%Y | 연도(4자리, 0 패딩) | 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자리, 0 패딩) | 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PHP는 현대적인 프로그래밍, 특히 웹 개발 분야에서 강력하고 널리 사용되는 도구로 남아 있습니다. 1) PHP는 사용하기 쉽고 데이터베이스와 완벽하게 통합되며 많은 개발자에게 가장 먼저 선택됩니다. 2) 동적 컨텐츠 생성 및 객체 지향 프로그래밍을 지원하여 웹 사이트를 신속하게 작성하고 유지 관리하는 데 적합합니다. 3) 데이터베이스 쿼리를 캐싱하고 최적화함으로써 PHP의 성능을 향상시킬 수 있으며, 광범위한 커뮤니티와 풍부한 생태계는 오늘날의 기술 스택에 여전히 중요합니다.

PHP에서는 약한 참조가 약한 회의 클래스를 통해 구현되며 쓰레기 수집가가 물체를 되 찾는 것을 방해하지 않습니다. 약한 참조는 캐싱 시스템 및 이벤트 리스너와 같은 시나리오에 적합합니다. 물체의 생존을 보장 할 수 없으며 쓰레기 수집이 지연 될 수 있음에 주목해야합니다.

\ _ \ _ 호출 메소드를 사용하면 객체를 함수처럼 호출 할 수 있습니다. 1. 객체를 호출 할 수 있도록 메소드를 호출하는 \ _ \ _ 정의하십시오. 2. $ obj (...) 구문을 사용할 때 PHP는 \ _ \ _ invoke 메소드를 실행합니다. 3. 로깅 및 계산기, 코드 유연성 및 가독성 향상과 같은 시나리오에 적합합니다.

섬유는 PHP8.1에 도입되어 동시 처리 기능을 향상시켰다. 1) 섬유는 코 루틴과 유사한 가벼운 동시성 모델입니다. 2) 개발자는 작업의 실행 흐름을 수동으로 제어 할 수 있으며 I/O 집약적 작업을 처리하는 데 적합합니다. 3) 섬유를 사용하면보다 효율적이고 반응이 좋은 코드를 작성할 수 있습니다.

PHP 커뮤니티는 개발자 성장을 돕기 위해 풍부한 자원과 지원을 제공합니다. 1) 자료에는 공식 문서, 튜토리얼, 블로그 및 Laravel 및 Symfony와 같은 오픈 소스 프로젝트가 포함됩니다. 2) 지원은 StackoverFlow, Reddit 및 Slack 채널을 통해 얻을 수 있습니다. 3) RFC에 따라 개발 동향을 배울 수 있습니다. 4) 적극적인 참여, 코드에 대한 기여 및 학습 공유를 통해 커뮤니티에 통합 될 수 있습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP는 죽지 않고 끊임없이 적응하고 진화합니다. 1) PHP는 1994 년부터 새로운 기술 트렌드에 적응하기 위해 여러 버전 반복을 겪었습니다. 2) 현재 전자 상거래, 컨텐츠 관리 시스템 및 기타 분야에서 널리 사용됩니다. 3) PHP8은 성능과 현대화를 개선하기 위해 JIT 컴파일러 및 기타 기능을 소개합니다. 4) Opcache를 사용하고 PSR-12 표준을 따라 성능 및 코드 품질을 최적화하십시오.

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
