MongoDBを使用して、配列内のオブジェクトのフィールドに特定の値を持つエントリをクエリすることはできますか?
はい、MongoDBを使用して配列内のオブジェクトのフィールドをクエリするには、次の構文を使用します-
db.yourCollectionName.find({"yourOuterFieldName": { $elemMatch: { "yourInnerFieldName": "yourValue" } } } ).pretty();
上記の概念を理解するために、ドキュメントを使用してコレクションを作成しましょう。ドキュメントを使用してコレクションを作成するためのクエリは次のとおりです-
> db.objectInAnArrayDemo.insertOne({ "StudentDetails": [{ "StudentName": "John", "StudentMessage": "Hi"}, {"StudentName": "Larry", "StudentMessage": "Hello"}]}) { "acknowledged" : true, "insertedId" : ObjectId("5c92635d36de59bd9de06381") } > db.objectInAnArrayDemo.insertOne({ "StudentDetails": [{ "StudentName": "Carol", "StudentMessage": "Hello"}, {"StudentName": "David", "StudentMessage": "Good Morning"}]}) { "acknowledged" : true, "insertedId" : ObjectId("5c92637936de59bd9de06382") }
find()メソッドを使用して、コレクションのすべてのドキュメントを表示します。クエリは次のとおりです-
> db.objectInAnArrayDemo.find().pretty();
以下は出力です-
{ "_id" : ObjectId("5c92635d36de59bd9de06381"), "StudentDetails" : [ { "StudentName" : "John", "StudentMessage" : "Hi" }, { "StudentName" : "Larry", "StudentMessage" : "Hello" } ] } { "_id" : ObjectId("5c92637936de59bd9de06382"), "StudentDetails" : [ { "StudentName" : "Carol", "StudentMessage" : "Hello" }, { "StudentName" : "David", "StudentMessage" : "Good Morning" } ] }
これは、MongoDB-
を使用した配列内のオブジェクト内のフィールドのクエリです。> db.objectInAnArrayDemo.find({"StudentDetails": { $elemMatch: { "StudentMessage": "Good Morning" } } } ).pretty();
以下は出力です-
{ "_id" : ObjectId("5c92637936de59bd9de06382"), "StudentDetails" : [ { "StudentName" : "Carol", "StudentMessage" : "Hello" }, { "StudentName" : "David", "StudentMessage" : "Good Morning" } ] }
-
idがドキュメントフィールドの配列値と等しい場合に除外するMongoDBクエリ
このために、$inと一緒に$notを使用します。ドキュメントを使用してコレクションを作成しましょう- [ { id: "101", subjectid: [ "102" ] }, { id: "102", &nb
-
MongoDBで配列をクエリして、特定の値をフェッチします
配列から特定の値をフェッチするには、$ projectとともにaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo761.insertOne( ... { ... "details": [ ... { ... "student": { ... &nb