クエリに$or演算子が含まれている場合、MongoDBインデックスでクエリを実行できますか?
はい、できます。まず、インデックスを作成してから、explain()を使用する必要があります。まず、MongoDBインデックスを作成しましょう。クエリは次のとおりです。
> db.indexOrQueryDemo.ensureIndex({"First":1});
これにより、次の出力が生成されます
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 2, "numIndexesAfter" : 3, "ok" : 1 }
2番目のインデックスを作成するためのクエリは次のとおりです
> db.indexOrQueryDemo.ensureIndex({"Second":1});
これにより、次の出力が生成されます
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 3, "numIndexesAfter" : 4, "ok" : 1 }
以下は、インデックスを持つ$or演算子のクエリです。ここでもexplain()を使用しました
> db.indexOrQueryDemo.find({$or:[{First:1}, {Second:2}]}).explain();
これにより、次の出力が生成されます
{ "queryPlanner" : { "plannerVersion" : 1, "namespace" : "test.indexOrQueryDemo", "indexFilterSet" : false, "parsedQuery" : { "$or" : [ { "First" : { "$eq" : 1 } }, { "Second" : { "$eq" : 2 } } ] }, "winningPlan" : { "stage" : "SUBPLAN", "inputStage" : { "stage" : "FETCH", "inputStage" : { "stage" : "OR", "inputStages" : [ { "stage" : "IXSCAN", "keyPattern" : { "First" : 1 }, "indexName" : "First_1", "isMultiKey" : false, "multiKeyPaths" : { "First" : [ ] }, "isUnique" : false, "isSparse" : false, "isPartial" : false, "indexVersion" : 2, "direction" : "forward", "indexBounds" : { "First" : [ "[1.0, 1.0]" ] } }, { "stage" : "IXSCAN", "keyPattern" : { "Second" : 1 }, "indexName" : "Second_1", "isMultiKey" : false, "multiKeyPaths" : { "Second" : [ ] }, "isUnique" : false, "isSparse" : false, "isPartial" : false, "indexVersion" : 2, "direction" : "forward", "indexBounds" : { "Second" : [ "[2.0, 2.0]" ] } } ] } } }, "rejectedPlans" : [ ] }, "serverInfo" : { "host" : "DESKTOP-QN2RB3H", "port" : 27017, "version" : "4.0.5", "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" }, "ok" : 1 }
-
$またはOperatorを使用してドキュメントをフェッチするMongoDB
$ or演算子は、2つ以上の式の配列に対して論理OR演算を実行します。ドキュメントを使用してコレクションを作成しましょう- > db.demo674.insertOne({Name:"Chris",Age:21}); { "acknowledged" : true, "insertedId" : ObjectId("5ea3f33604263e90dac943eb") } > db.demo674.insertOne({Name:"David
-
ネストされたドキュメントを更新するMongoDBクエリ?
ネストされたドキュメントを更新するには、update()を使用し、その中でドット表記を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo607.insertOne( ... { ... id:1, ... "Info1" : { ... "Name" : "Chris", ...