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

O Moongoose 3.8.8 suporta o operador $position?


Isso realmente não importa e nunca importa para qualquer implementação de "framework" e não me importo de explicar o porquê.

Cada "framework" (como Mongoose, Mongoid, Doctrine, MongoEngine, etc, etc, etc) é basicamente construído sobre uma implementação básica de "driver" que na maioria dos casos foi desenvolvida pela própria equipe do MongoDB. Portanto, a funcionalidade básica está sempre lá, mesmo que você precise "mergulhar" até um nível para usar esses métodos "nativos".

Então aqui seria o exemplo de uso nativo neste caso:
List.collection.update(
{},
{ "$push": {
    "list": {
      "$each": [ 1, 2, 3 ],
      "$position": 0 }
    }
},function(err,NumAffected) {
  console.log("done");

});

Observe o método de "coleção" usado no modelo, que está obtendo os detalhes da coleção "brutos" do driver. Então você está usando seu método e não algum método "embrulhado" que pode estar fazendo processamento adicional.

A próxima e mais básica razão é se você não conseguir encontrar o método e a aplicação dos operadores que você precisa, aqui é um fato simples.

Cada operação usada pelos métodos em cada framework e método de driver básico é essencialmente uma chamada para o método "runCommand" na API básica. Então, como essa chamada básica está disponível em todos os lugares ( de uma forma ou de outra, porque tem que ser ), você pode fazer tudo o que encontrar anunciado no site do MongoDB com cada implementação de linguagem em qualquer estrutura.

Mas a chamada curta para sua solicitação específica é, já que isso não é realmente um método call, mas é simplesmente parte dos argumentos BSON como passados, então é claro que não há restrição por um driver de linguagem específico para realmente usar isso.

Portanto, você pode usar esses novos argumentos sem atualizar para a versão mais recente. Mas você provavelmente obterá alguns métodos interessantes para fazer isso se realmente fizer isso.