コンテンツに「work」という単語を含むログのみをフィルタリングするMongoDBクエリ
「work」という単語を含むログをフィルタリングするには、aggregate()を$filterと一緒に使用します。まず、ドキュメントを使用してコレクションを作成しましょう-
> db.demo383.insertOne(
... {
... "ServerName":"Jboss",
... "ServerLogs": [
... {
... "status":"Working"
... },
... {
... "status":"Stop"
... },
... {
... "status":"Worked"
... }
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5b635422064be7ab44e7f1")
} find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo383.find().pretty();
これにより、次の出力が生成されます-
{
"_id" : ObjectId("5e5b635422064be7ab44e7f1"),
"ServerName" : "Jboss",
"ServerLogs" : [
{
"status" : "Working"
},
{
"status" : "Stop"
},
{
"status" : "Worked"
}
]
} 以下はフィルタリングするクエリです-
> db.demo383.aggregate([
... { "$addFields": {
... "ServerLogs": {
... "$filter": {
... "input": "$ServerLogs",
... "cond": {
... "$ne": [
... { "$indexOfBytes": [
... { "$toUpper": "$$this.status" },
... { "$toUpper": "work" }
... ]},
... -1
... ]
... }
... }
... }
... }}
... ]) これにより、次の出力が生成されます-
{
"_id" : ObjectId("5e5b635422064be7ab44e7f1"), "ServerName" : "Jboss", "ServerLogs" : [
{ "status" : "Working" }, { "status" : "Worked" }
]
} -
ロールに基づいて「名前」フィールドのみをフェッチするMongoDBクエリ?
これには、aggregate()を使用します。ここでは、管理者、ゲスト、ユーザーの3つの役割について検討しました。ドキュメントを使用してコレクションを作成しましょう- > db.demo532.insertOne({"Name":"Chris","Type":"Admin"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b4a9def4dcbee
-
ネストされたドキュメントを更新するMongoDBクエリ?
ネストされたドキュメントを更新するには、update()を使用し、その中でドット表記を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo607.insertOne( ... { ... id:1, ... "Info1" : { ... "Name" : "Chris", ...