MongoDBの配列に重複がないか確認しますか?
配列内の重複をチェックするには、MongoDBでaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo756.insertOne({"SubjectName":["MySQL","MongoDB","Java"]}); { "acknowledged" : true, "insertedId" : ObjectId("5eb01e0d5637cd592b2a4add") } > db.demo756.insertOne({"SubjectName":["MongoDB","MySQL","MongoDB","C","C+","MySQL"]}); { "acknowledged" : true, "insertedId" : ObjectId("5eb01e2b5637cd592b2a4ade") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo756.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5eb01e0d5637cd592b2a4add"), "SubjectName" : [ "MySQL", "MongoDB", "Java" ] } { "_id" : ObjectId("5eb01e2b5637cd592b2a4ade"), "SubjectName" : [ "MongoDB", "MySQL", "MongoDB", "C", "C+", "MySQL" ] }
以下は、配列内の重複をチェックするためのクエリです-
> db.demo756.aggregate([ ... {"$project": {"SubjectName":1}}, ... {"$unwind":"$SubjectName"}, ... {"$group": {"_id":{"_id":"$_id", "Name":"$SubjectName"}, "count":{"$sum":1}}}, ... {"$match": {"count":{"$gt":1}}}, ... {"$group": {"_id": "$_id._id", "SubjectName":{"$addToSet":"$_id.Name"}}} ... ])
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5eb01e2b5637cd592b2a4ade"), "SubjectName" : [ "MongoDB", "MySQL" ] }
-
配列内の配列にMongoDB$addToSetを実装し、値を追加します
これには、$ addToSetとともにupdate()を使用します。 $ addToSet演算子は、値がすでに存在しない限り、配列に値を追加します。存在する場合、$addToSetはその配列に何もしません。ドキュメントを使用してコレクションを作成しましょう- > db.demo509.insertOne( ... { ... ... "value1" : [ ... { ... "value2" : [ ... &
-
MongoDBでネストされた配列のフィルタリング条件を設定します
フィルタリング条件を設定するには、MongoDBaggregate()で$filterと$condを使用します。 $ filterは、指定された条件に基づいて返す配列のサブセットを選択します。ドキュメントを使用してコレクションを作成しましょう- > db.demo725.insertOne( ... { ... ... "details": { ... ... "userMessages": [ ...