J'ai une collection de documents dans lesquels un nom de champ semble avoir un point :
{
"prod_id": "123",
"prod_cost (whole)": 49
"prod_cost (dec.)": 49
}
Comment puis-je exécuter efficacement un pipeline d'agrégation à l'aide de ce champ ?
À partir de maintenant, il signale des valeurs nulles car il considère ")" comme un champ imbriqué supplémentaire pour "prod_cost (déc.)".
Depuis la version 5 de MongoDB ,
MongoDB 5.0 ajoute un support amélioré pour l'utilisation de ($) et (.) dans les noms de champs. Il existe certaines restrictions. Voir Considérations sur les noms de champ pour plus de détails.
Noms de champs avec des points (.) et des signes dollar ($)
Dans la plupart des cas, les données qui ont été stockées en utilisant des noms de champ comme ceux-ci ne sont pas directement accessibles. Vous devez utiliser des méthodes d'assistance telles que $getField, $setField et $literal dans les requêtes qui accèdent à ces champs.
{ "$getField": "prod_cost (dec.)" }
Pour accéder au champ dans l'objet, vous pouvez vous référer à Interroger un champ dans une démo de sous-document.
{
"$getField": {
field: {
$literal: "prod_cost (dec.)"
},
input: "$productInfo"
}
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots