Je suis essayer de faire quelques fonctions mathématiques sur 3 valeurs à partir d'un gauche joint collecté les valeurs sont dans la bonne collection.Mongo addfields retourne la collection pas la valeur
$AllBodies=Invoke-MdbcAggregate @(
# filter bodies with arsenic
@{ '$match' = @{
'name' ='Gru Hypue KS-T d3-31 9 b a'
'materials' = @{ '$elemMatch'[email protected]{ 'material_name'="Arsenic" } }
}}
# list just the name, materials array and FK
@{ '$project' = @{
'system_id'=1;
'name'=1;
'materials'=1;
}}
# unwind the array, duplicates source record
@{ '$unwind' = @{
'path' = '$materials';
'preserveNullAndEmptyArrays' = $false
}}
# now re-filter the for just the material arsenic/
@{ '$match' = @{
'materials.material_name' = 'Arsenic';
'materials.share' = @{ '$gte' = 2.7 }
}}
# sort the records by % arsenic descending
@{ '$sort' = @{
'materials.share' = -1
}}
# left join the systems collection
@{ '$lookup' = @{
'from' = 'systems'
'localField' = 'system_id'
'foreignField' = 'id'
'as' = 'systems'
}}
# add fields to work with later - more dev required
@{ '$addFields' = @{
'x' = '$systems.x'
'y' = '$systems.y'
'z' = '$systems.z'
'systemname' = '$systems.name'
}}
) -Collection $bodies
Je suis en train de porter les valeurs d'un niveau dans le document haut que je ne parviens pas à des fonctions mathématiques sur les points champs qui se plaignent de référence.
Dans le document de haut je veux d = sqr ((x1-x2) 2+ (y1-y2) 2+ (z1-z2) 2).
Je suis en train de le faire pendant le temps de requête plutôt que de retraiter l'ensemble de la collection, il y a 100.000 entrées de ce (potentiellement)
Le code est PowerShell avec pilote .net, heureux d'avoir dans .js si
eteint est la suivante ...
Name Value
---- -----
_id 59cbf243ef32b7bbe22654b4
name Gru Hypue KS-T d3-31 9 b a
system_id 3288878
materials {material_id, material_name, share}
systems {{ "_id" : ObjectId("59cba528ef32b7bbe28a7640"), "id" : 3288878, "edsm_id" : 2749852, "name" : "Gru Hypue KS-T d3-31", "x" : -4990.84375, "y" : -935.71875, "z" : 13387.15625, "population" : 1000...
y {-935.71875}
systemname {Gru Hypue KS-T d3-31}
z {13387.15625}
x {-4990.84375}
comme vous pouvez le voir x, y, z sont des collections plutôt que des valeurs
TIA
Veuillez partager quelques exemples de données d'entrée et la sortie désirée ainsi qu'une question appropriée. Qu'essayez-vous exactement d'accomplir? – dnickless
désolé essayé d'être bref ... – RocketAndy