"काम" शब्द वाले लॉग को फ़िल्टर करने के लिए, $filter के साथ समुच्चय () का उपयोग करें। आइए पहले दस्तावेजों के साथ एक संग्रह बनाएं -
> db.demo383.insertOne(... {... "सर्वरनाम":"जेबॉस",... "सर्वरलॉग्स":[... {... "स्टेटस":"वर्किंग"... },... {... "स्थिति":"रोकें"...},... {... "स्थिति":"काम"...}...]...}... );{ "स्वीकृत" :सच, "insertId" :ObjectId("5e5b635422064be7ab44e7f1")}
संग्रह से सभी दस्तावेज़ों को खोजने () विधि की सहायता से प्रदर्शित करें -
> db.demo383.find().pretty();
यह निम्नलिखित आउटपुट देगा -
{ "_id" :ObjectId("5e5b635422064be7ab44e7f1"), "ServerName" :"Jboss", "ServerLogs" :[{"status" :"Working" }, { "status" :"Stop" }, { " status" :"काम किया" } ]}
फ़िल्टर करने के लिए निम्न क्वेरी है -
> db.demo383.aggregate([... {"$addFields":{... "ServerLogs":{... "$filter":{... "इनपुट":"$ServerLogs", ... "cond":{... "$ne":[... {"$indexOfBytes":[... {"$toUpper":"$$this.status" },... { " $toUpper":"work" }... ]},... -1... ]... }... }... }... }}... ])
यह निम्नलिखित आउटपुट देगा -
{ "_id" :ObjectId("5e5b635422064be7ab44e7f1"), "ServerName" :"Jboss", "ServerLogs" :[ { "status" :"Working" }, { "status" :"worked" } ] }पूर्व>