Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

콘텐츠에 "work" 단어가 포함된 로그만 필터링하는 MongoDB 쿼리

<시간/>

"work"라는 단어가 포함된 로그를 필터링하려면 $filter와 함께 집계()를 사용합니다. 먼저 문서로 컬렉션을 생성해 보겠습니다. −

> db.demo383.insertOne(... {... "ServerName":"Jboss",... "ServerLogs":[... {... "status":"작업 중"... },... {... "상태":"중지"... },... {... "상태":"작업됨"... }... ]... }... );{ "승인됨" :true, "insertedId" :ObjectId("5e5b635422064be7ab44e7f1")}

find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -

> db.demo383.find().pretty();

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" :ObjectId("5e5b635422064be7ab44e7f1"), "ServerName" :"Jboss", "ServerLogs" :[ { "status" :"작업 중" }, { "status" :"중지" }, { " 상태" :"작업" } ]}

다음은 필터링할 쿼리입니다 -

> db.demo383.aggregate([... { "$addFields":{... "ServerLogs":{... "$filter":{... "입력":"$ServerLogs", ... "조건":{... "$ne":[... { "$indexOfBytes":[... { "$toUpper":"$$this.status" },... { " $toUpper":"작업" }... ]},... -1... ]... }... }... }... }}... ])

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" :ObjectId("5e5b635422064be7ab44e7f1"), "ServerName" :"Jboss", "ServerLogs" :[ { "status" :"Working" }, { "status" :"Worked" } ] }