2012-03-24 21 views
5

que tienen un modelo:Fecha en Mongoid consultas de

class SimpleAction 
    include Mongoid::Document 
    field :set_date, :type => Date 

y tengo algunos datos de la colección:

{ "_id": OBJECTID ("4f6dd2e83a698b2518000006"), "name": " lost ", " notes ":" "," set_date (1i) ":" 2012 "," set_date (2i) ":" 3 ", " set_date (3i) ":" 25 "," set_date (4i) ":" 13 "," set_date (5i) ":" 57 ", " duration ": 15," todo ":" 4 "}

Puede ver la fecha de la tienda mongoid en los cinco campos: set_date (ni).

tengo dos pregunta:

  • Como puedo filtrar los datos por campo set_date en el cliente de consola mongo? Algo como esto:

    db.simple_actions.find({ set_date : { "$lte" : new Date() } }) 
    

    Mi consulta no devolvió ningún dato.

  • ¿Cómo puedo filtrar los datos por el campo set_date en mi controlador Rails? Algo como esto:

    @simple_actions = SimpleAction.where(:set_date => { '$lte' => Date.today }) 
    

Respuesta

12

Yo recomendaría no usar Date, pero en lugar DateTime:

field :set_date, :type => DateTime 

Ahora no sólo va a ser almacenado en 1 campo, así:

"set_date" : ISODate("2012-03-14T17:42:27Z") 

Pero Mongoid manejará correctamente varias conversiones para las consultas que desee:

SimpleAction.where(:set_date => { :$lte => Date.today }) 
+0

Hmm .. me cambió difinition modelo e insertar nuevos recodrs en la colección, pero nada cambió. – demas

+0

Aquí está el fragmento de formulario: <% = f.datetime_select: set_date%> – demas

+0

¿Puede ser más específico sobre "nada ha cambiado"? Claramente, DateTime es un tipo de campo diferente de la fecha, ¿sí? :) – rfunduk

0

Puede usarlo con la clase Hora.

Carriles es tan bueno con Api para móviles (como Android), cuando envió la fecha de móvil a API como: 1482723520. (last_created = 1482723520)

Usted puede usarlo como esa:

time = Time.at(params[:last_created].to_i) 

y en Rails se puede consultar así:

Number.where(created_at: { :$gte => time })