"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" } ] }사전>