MongoDBの便利な配列演算



データスキーマ
{ "_id" : ObjectId("60966503a06708c0a9d05b51"), "item" : "journal", "qty" : 25, "tags" : [ "blank", "red" ], "dim_cm" : [ 14, 21 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b52"), "item" : "notebook", "qty" : 50, "tags" : [ "red", "blank" ], "dim_cm" : [ 14, 21 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b53"), "item" : "paper", "qty" : 100, "tags" : [ "red", "blank", "plain" ], "dim_cm" : [ 14, 21 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b54"), "item" : "planner", "qty" : 75, "tags" : [ "blank", "red" ], "dim_cm" : [ 22.85, 30 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b55"), "item" : "postcard", "qty" : 45, "tags" : [ "blue" ], "dim_cm" : [ 10, 15.25 ] }

クエリ

1 -罰金順に
あなたがblankredを含んでいる項目を指定された順序で見つけたいと思うならば、あなたは下記のように質問を書くことができます.
db.items.find({tags:["blank","red"]})

// output
{ "_id" : ObjectId("60966503a06708c0a9d05b51"), "item" : "journal", "qty" : 25, "tags" : [ "blank", "red" ], "dim_cm" : [ 14, 21 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b54"), "item" : "planner", "qty" : 75, "tags" : [ "blank", "red" ], "dim_cm" : [ 22.85, 30 ] }

Note: Order of the query matters
If you have specified [red,blank] then you'll get only [red,blank] not [blank,red]



2 -順序なしで見つける
あなたが正確な順序を望まないならば、あなたはMongoDBの$all演算子を使用することができます.
db.items.find({tags:{$all:["red"]}})

// output
{ "_id" : ObjectId("60966503a06708c0a9d05b51"), "item" : "journal", "qty" : 25, "tags" : [ "blank", "red" ], "dim_cm" : [ 14, 21 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b52"), "item" : "notebook", "qty" : 50, "tags" : [ "red", "blank" ], "dim_cm" : [ 14, 21 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b53"), "item" : "paper", "qty" : 100, "tags" : [ "red", "blank", "plain" ], "dim_cm" : [ 14, 21 ] }
{ "_id" : ObjectId("60966503a06708c0a9d05b54"), "item" : "planner", "qty" : 75, "tags" : [ "blank", "red" ], "dim_cm" : [ 22.85, 30 ] }

3 -単一要素のチェック
クエリパラメーターに文字列を直接提供できます.
 db.items.find({tags:"red"})
配列内の任意の要素をredを要素として使用します.

3 -シングル(条件付き)のチェック
条件チェックの演算子を提供することができます
db.items.find({dim_cm:{$gt:21,$lt:50}})
上記のクエリは、すべての項目を見つけます.それは、50より小さく、21より大きいdim_cm配列内の任意の要素を持ちます.

探検する
あなたは、より詳細にここでhttps://docs.mongodb.com/manual/tutorial/query-arrays/を探検することができます

安達