2014-05-18 10 views
9

C'è un modo per fare un $ o una dichiarazione nella corrispondenza degli elementi?

ho questo:

opened: { 
    $elemMatch: { 
     closed: false 
     openingEvening: {$lte: currentTime}, 
     closingEvening: {$gte: currentTime}, 
    } 
} 

e vorrei aggiungere openingMorning alla l

Come posso estenderlo come:

opened: { 
    $elemMatch: { 
     closed: false 
     {$or: [ 
      {openingEvening: {$lte: currentTime}, closingEvening: {$gte: currentTime},}, 
      {openingMorning: {$lte: currentTime}, closingMorning: {$gte: currentTime}} 
     ] 
     } 
    } 
} 

è qualcosa di simile possibile?

risposta

13

Certo che lo è, basta chiarire la sintassi, ma che, fondamentalmente, l'aveva:

{ 
    "opened": { 
     "$elemMatch": { 
      "closed": false, 
      "$or": [ 
       { 
        "openingEvening": { "$lte": currentTime }, 
        "closingEvening": { "$gte": currentTime } 
       }, 
       { 
        "openingMorning": { "$lte": currentTime }, 
        "closingMorning": { "$gte": currentTime } 
       } 

      ] 
     } 
    } 
} 

E dato un campione idea dei dati:

{ 
    "_id" : ObjectId("537969cee90c3db84958aa86"), 
    "opened" : [ 
      { 
        "closed" : false, 
        "openingEvening" : 17, 
        "closingEvening" : 22, 
        "openingMorning" : 11, 
        "closingMorning" : 14 
      } 
    ] 
} 
{ 
    "_id" : ObjectId("53796a47e90c3db84958aa87"), 
    "opened" : [ 
      { 
        "closed" : false, 
        "openingMorning" : 13, 
        "closingMorning" : 14 
      } 
    ] 
} 

Un ora corrente di 12 sarebbe corrisponde al primo ma non al secondo documento ma un valore di 13 corrisponderebbe a entrambi.

Si noti inoltre che questi si trovano all'interno di un array, pertanto, considerato lo scopo previsto, è probabile che si desideri un campo "dayOfWeek" da includere anche in questo caso

Problemi correlati