MongoDB: agrégat $ projet ajouter un champ avec une valeur statique
Je peux en quelque sorte ajouter un champ personnalisé avec statique (non calculée) de la valeur?
Je veux préparer les objets avant de les envoyer et j'ai besoin de supprimer certains champs avec les informations internes et ajouter un champ avec une certaine ID de l'entité.
Par exemple, j'ai la collection "test" avec des objets comme cette
{_id: ObjectId(...), data: {...}}
Et j'ai besoin de les convertir à
{data: {...}, entity_id: 54}
Alors, comment puis-je ajouter entity_id: 54 sans boucle, plus de suite dans mon code?
db.test.aggregate({ $project: {_id: 0, data: 1, entity_id: ? } })
Grâce
source d'informationauteur redexp
Vous devez vous connecter pour publier un commentaire.
Notez que $littérale a été mis en œuvre de Mongo 2.6.
Alors maintenant, vous pouvez simplement écrire:
Voir $littérale.
modifier que de 2.6 le
$literal
expression existe de sorte que vous n'avez pas à utiliser la solution de contournement maintenant.Réponse originale à cette question: je sais que cela peut paraître vraiment stupide, mais vous pouvez utiliser un "no-op" l'expression de "calculer" ce dont vous avez besoin.
Exemple:
Il est proposé de
$literal
opérateur exactement pour ce cas d'utilisation, mais il n'a pas été encore mis en œuvre, vous pouvez voter pour elle ici.