MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Node.js a MongoDB:trova per data

Non hai bisogno di nessuno di questi involucri. Una data è una data :

var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]}; 

Ora, ovviamente, se quelle "date" nel tuo documento sono in realtà "stringhe" e non una corretta data tipi allora questo è il tuo problema. E quello che davvero necessario è correggere quei valori in modo che siano date reali.

Questo vale per qualsiasi implementazione della lingua, in cui dovresti lavorare con il tipo "data" nativo e lasciare che il driver esegua la conversione per te.

Come determinare se il campo è una stringa

Bene, la chiara differenza è che quando guardi un documento nella mongo shell, se è un tipo di data BSON reale, sarà simile a questo:

"start": ISODate("2014-03-31T08:47:48.946Z"),

Se ciò non è abbastanza chiaro, c'è il $type operatore che puoi utilizzare in una query come questa:

db.collection.find({ "start": { "$type": 2 } }).count()

Inoltre non MongoDB che sta facendo questo se si tratta di una stringa, ma piuttosto una cattiva implementazione nell'applicazione o importazione responsabile della creazione di questo. Su questo si basavano i punti evidenziati nella risposta iniziale.