MongoDBでネストされた配列のフィルタリング条件を設定します
フィルタリング条件を設定するには、MongoDBaggregate()で$filterと$condを使用します。 $ filterは、指定された条件に基づいて返す配列のサブセットを選択します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo725.insertOne( ... { ... ... "details": { ... ... "userMessages": [ ... { ... "Messages": [ ... { "Message": "Hello" }, ... { "Message": "How" }, ... { "Message": "are" } ... ] ... ... }, ... { ... "Messages": [ ... { "Message": "Good" }, ... { "Message": "Bye" } ... ... ] ... }, ... { ... "Messages": [ ... { "Message": "Hello" }, ... { "Message": "Bye" } ... ... ] ... ... } ... ] ... } ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5eab16cd43417811278f5893") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo725.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5eab16cd43417811278f5893"), "details" : { "userMessages" : [ { "Messages" : [ { "Message" : "Hello" }, { "Message" : "How" }, { "Message" : "are" } ] }, { "Messages" : [ { "Message" : "Good" }, { "Message" : "Bye" } ] }, { "Messages" : [ { "Message" : "Hello" }, { "Message" : "Bye" } ] } ] } }
以下は、ネストされた配列のフィルタリング条件を設定するためのクエリです-
> db.demo725.aggregate([ ... { ... $addFields: { ... "details.userMessages": { ... $filter: { ... input: "$details.userMessages", ... as: "out", ... cond: { ... $anyElementTrue: { ... $map: { ... input: "$$out.Messages", ... in: { $gte: [ { $indexOfBytes: [ "$$this.Message", "Hello" ] }, 0 ] } ... } ... } ... } ... } ... } ... } ... } ... ]).pretty()
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5eab16cd43417811278f5893"), "details" : { "userMessages" : [ { "Messages" : [ { "Message" : "Hello" }, { "Message" : "How" }, { "Message" : "are" } ] }, { "Messages" : [ { "Message" : "Hello" }, { "Message" : "Bye" } ] } ] } }
-
MongoDBの配列に重複がないか確認しますか?
配列内の重複をチェックするには、MongoDBでaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo756.insertOne({"SubjectName":["MySQL","MongoDB","Java"]}); { "acknowledged" : true, "insertedId" : ObjectId("5eb01e0d5637cd592b2
-
MongoDBを使用して、特定のネストされたドキュメントのオブジェクトの配列をクエリしますか?
ネストされたドキュメントのオブジェクトの配列をクエリするには、find()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo763.insertOne( ... { ... _id:1, ... CountryName:"US", ... "studentInformation": [ ... {