sql >> Database >  >> NoSQL >> MongoDB

Node.js naar MongoDB:zoeken op datum

Deze verpakking heb je niet nodig. Een datum is een datum :

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

Nu natuurlijk als die "datums" in uw document eigenlijk "strings" zijn en niet de juiste datum typen dan is dat jouw probleem. En wat je echt nodig is om deze waarden te corrigeren, zodat het echte datums zijn.

Dit is van toepassing op elke taalimplementatie, waarbij u met het oorspronkelijke "datum"-type zou moeten werken en het stuurprogramma de conversie voor u moet laten doen.

Hoe te bepalen of het veld een string is

Welnu, het duidelijke verschil is wanneer je naar een document in de mongo-shell kijkt, als het een echt BSON-datumtype is, ziet het er als volgt uit:

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

Als dat niet duidelijk genoeg is, is er de $type operator die u in een query als deze kunt gebruiken:

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

Het is ook niet MongoDB die dit doet als het een string is, maar eerder een slechte implementatie in de applicatie of import die verantwoordelijk was voor het maken hiervan. Dat was waar de punten in de eerste reactie over gingen.




  1. afsluiten redis-server vanaf de opdrachtregel

  2. Express-sessie mongodb-sessie gaat niet door

  3. Objecten zijn niet geldig als onderliggende React-gegevens van MongoDB

  4. Redis, luisteren naar pubsub-evenementen en deze omzetten in een stream voor betrouwbaarder gebruik