sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Moongoose 3.8.8 admite el operador de posición $?

En realidad, esto no importa y nunca importa para ninguna implementación de "marco" y no me importa explicar por qué.

Cada "marco" individual (como Mongoose, Mongoid, Doctrine, MongoEngine, etc., etc., etc.) se basa básicamente en una implementación básica de "controlador" que en la mayoría de los casos ha sido desarrollado por el propio personal de MongoDB. Por lo tanto, la funcionalidad básica siempre está ahí, incluso si necesita "profundizar" hasta un nivel para usar esos métodos "nativos".

Así que aquí estaría el ejemplo de uso nativo en este caso:

List.collection.update(
{},
{ "$push": {
    "list": {
      "$each": [ 1, 2, 3 ],
      "$position": 0 }
    }
},function(err,NumAffected) {
  console.log("done");

});

Tenga en cuenta el método de "recopilación" utilizado por el modelo, que obtiene los detalles de la recopilación "en bruto" del controlador. Por lo tanto, está utilizando su método y no un método "envuelto" que puede estar realizando un procesamiento adicional.

La siguiente y más básica razón es que si no puede encontrar el método y la aplicación de los operadores que necesita, aquí es un hecho simple.

Cada operación individual utilizada por los métodos en cada marco y método de controlador básico es esencialmente una llamada al método "runCommand" en la API básica. Entonces, dado que esa llamada básica está disponible en todas partes (de una forma u otra, porque tiene que estarlo), puede hacer todo lo que encuentre anunciado en el sitio de MongoDB con cada implementación de idioma en cualquier marco.

Pero la breve llamada a su solicitud particular es, ya que este no es realmente un método call pero es simplemente parte de los argumentos BSON que se pasan, entonces, por supuesto, no hay ninguna restricción por parte de un controlador de idioma en particular para usar esto.

Por lo tanto, puede usar estos nuevos argumentos sin, por supuesto, actualizar a la versión más reciente. Pero probablemente obtendrá algunos buenos métodos para hacerlo si realmente lo hace.