replicar replica create 16mb mongodb

create - mongodb replication



Clasificación MongoDB (4)

Quiero implementar una característica de "golpe" para los temas. Una vez que se golpea un tema, tendrá un nuevo campo "bump_date". Quiero ordenarlo para que cuando haya un campo "bump_date", se clasifique como si fuera el campo "created". Aquí hay un ejemplo de mi db.topics:

{ "text" : "test 1", "created" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)" }, { "text" : "test 2", "created" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)" }, { "text" : "test 3", "created" : "Sun Nov 17 2011 02:03:28 GMT-0800 (PST)", "bump_date: : "Sun Nov 19 2011 02:03:28 GMT-0800 (PST)" }

Quiero que el género regrese en el orden de "prueba 1", "prueba 3", "prueba 2"


Actualmente no es posible en mongodb hacer una clasificación basada en los criterios definidos por el usuario en varias columnas.eg. aquí la función habría sido devolver bump_date si está configurada, de lo contrario volverá a created

O tendrá que usar un código del lado del servidor o del lado del cliente como se menciona aquí:

Mongo clasificación compleja?

o si desea permanecer con la búsqueda y clasificación básica, deberá:

  • crear una clave bump_date equivalente a created siempre que se created un nuevo registro. Esto no será una sobrecarga de datos, ya que puede esperar que cada tema suyo sea interceptado de vez en cuando en el futuro, por bump_date tanto, eventualmente se agregará el campo bump_date . Así que agrégalo desde el inicio mismo.

  • Siempre que se bump_date el artículo, actualice el campo bump_date .

Sus documentos de ejemplo se verán así con este cambio:

{ "text" : "test 1", "created" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)", "bump_date" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)" }, { "text" : "test 2", "created" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)", "bump_date" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)" }, { "text" : "test 3", "created" : "Sun Nov 17 2011 02:03:28 GMT-0800 (PST)", "bump_date: : "Sun Nov 19 2011 02:03:28 GMT-0800 (PST)" }

Deberá ensureIndex el índice en el campo bump_date. Ahora puede consultar los datos requeridos fácilmente.

db.topics.find().sort({ bump_date: 1 })


Como sugirió Brian Hicks, la creación de un campo updated_at adicional es el camino a seguir. De esta manera, cuando se crea un documento, puede haber creado_at y actualizado_al principio ser el mismo.

{ "created_at": xxx, "updated_at": xxx }

Si luego "topa" con el campo updated_at ajustándolo a la hora actual cuando hay un evento bump, puede ordenar en el campo updated_at para lograr el orden que desea.



También:

db.collection.find( { $query: {}, $orderby: { column : -1 } } )

donde 1 está ascendiendo y -1 está descendiendo.