10
votes

Mongodb créant un alias dans une requête

Quel est l'équivalent de MongoDB à cette requête:

Sélectionnez "FOO" en tant que barre, ID comme "SPEC" de TableMame


1 commentaires

Est-ce ce que vous essayez de faire? Stackoverflow.com/Questtions/14751835/...


3 Réponses :


16
votes

Il est possible de créer un nouveau champ avec le nom et la valeur donnés à partir d'un autre champ avec $ Projet:

db.books.aggregate(
   [
      {
         $project: {
            title: 1,
            isbn: {
               prefix: { $substr: [ "$isbn", 0, 3 ] },
               group: { $substr: [ "$isbn", 3, 2 ] },
               publisher: { $substr: [ "$isbn", 5, 4 ] },
               title: { $substr: [ "$isbn", 9, 3 ] },
               checkDigit: { $substr: [ "$isbn", 12, 1] }
            },
            lastName: "$author.last",
            copiesSold: "$copies"
         }
      }
   ]
)


2 commentaires

J'accepte cette réponse car la phase de projet permet des "alias" pour les champs. Voir User1735921 Répondre pour un exemple de la manière de projeter avec la modification de la valeur de champ d'origine


Si j'ai créé un index pour "titre" et en $ projet, j'ai changé "titre" sur "Leditle", trier "Leditle" utilise l'index du "titre"?



3
votes

Vous pouvez utiliser n'importe quel opérateur comme Toupper ou Tolower ou Concat ou tout autre opérateur que vous avez l'impression que vous pensez pouvoir travailler et créer un alias.

Exemple: Dans l'exemple suivant, créé_time est un champ de la collection. (Je ne suis pas bon avec la syntaxe afin que vous puissiez le corriger, mais c'est l'approche) xxx

Ainsi, en utilisant un opérateur de cette mode, vous pouvez créer autant d'alias que votre comme.


2 commentaires

intéressant. Je ne crois pas que le pipeline d'agrégation était en retour lorsque cette question a été posée. Je voudrais souligner que $ Concat pourrait être utilisé sans manipuler la valeur


Yeah Concat serait mieux, de toute façon je donnais juste un exemple de manière possible que je pensais ... édité mon post. Bien que Andrey ait déjà posté la syntaxe natale qui existe déjà à MongoDB. C'est juste un autre moyen possible, parfois il est utile lorsque vous écrivez des requêtes complexes.



1
votes

Vous pouvez utiliser ceci, peut-être aider

Données de base de données h2> xxx pré>

commande Mongo h2> xxx pré>

résultat H2>
{ "count" : 2, "month" : "2018-02" }
{ "count" : 1, "month" : "2018-03" }


1 commentaires

M'a sauvé beaucoup de recherches. Merci.