mongoose - Mongodb -Moogose query array fields filter -


i want filter when agg : 6 , 'value' greater : 1000 , agg : 5 , 'value' greater : 2000 schema: posting

query:db.postings.find(              { agg: {                   $elemmatch: {                      $and:[                      {agg:'5', value: { $gte: '2000'} },                      {agg:'6', value: { $gte: '1000'} }                      ]                      }                  }}             ); 

result : [] empty

collection':

{   "_id":1,     "agg" : [          { "value" : "2014", "agg" : "5"},          {"value" : "2500","agg" : "6"}     ], } {    _id:2,     "agg" : [          {  "value" : "2015",  "agg" : "5"},          { "value" : "1000","agg" : "6" }     ], } 

how write query correctly?

it looks want documents agg array satisfies following condition:

contains subdocument agg = "6" , value >= "2000" , contains subdocument agg = "5" , value >= "1000" 

your query documents agg subarray satisfies following condition:

contains subdocument     agg = "6" , value >= "2000"     ,     agg = "5" , value >= "1000" 

the mongodb formulation of correct query is

{      "$and" : [              { "agg" : { "$elemmatch" : { "agg" : "5", "value" : { "$gte" : "2000" } } } },             { "agg" : { "$elemmatch" : { "agg" : "6", "value" : { "$gte" : "1000" } } } }         ] } 

equivalently $all,

{     "agg" : {          "$all" : [              { "$elemmatch" : { "agg" : "5", "value" : { "$gte" : "2000" } } },             { "$elemmatch" : { "agg" : "6", "value" : { "$gte" : "1000" } } }         ]     } } 

this query matches both documents, guess expected. however, still have doubts you're doing intend - sure want values of agg.agg , agg.value strings , not numbers? example, following document matches query:

{     "_id" : 3,     "agg" : [         { "agg" : "5", "value" : "2015" },         { "agg" : "6", "value" : "potato" }     ] } 

this document not:

{     "_id" : 4,     "agg" : [         { "agg" : "5", "value" : "2015" },         { "agg" : "6", "value" : 2000 }     ] } 

Comments

Popular posts from this blog

javascript - AngularJS custom datepicker directive -

javascript - jQuery date picker - Disable dates after the selection from the first date picker -