MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Node.js para MongoDB:localizar por data


Você não precisa de nada desse embrulho. Uma data é uma data :
var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]}; 

Agora, é claro, se essas "datas" em seu documento forem realmente "strings" e não data adequada tipos, então esse é o seu problema. E o que você realmente precisa é corrigir esses valores para que sejam datas reais.

Isso se aplica a qualquer implementação da linguagem, onde você deve trabalhar com o tipo "data" nativo e deixar o driver fazer a conversão para você.

Como determinar se o campo é uma string


Bem, a clara diferença é quando você olha para um documento no shell mongo, se for um tipo de data BSON real, ficará assim:
"start": ISODate("2014-03-31T08:47:48.946Z"),

Se isso não estiver claro o suficiente, existe o $type operador que você pode usar em uma consulta como esta:
db.collection.find({ "start": { "$type": 2 } }).count()

Também não MongoDB que está fazendo isso se for uma string, mas sim uma implementação ruim no aplicativo ou importação que foi responsável por criar isso. Que era o que os pontos levantados na resposta inicial eram.