我试图做一些数学函数的3个值从左边加入收集的值是在正确的集合。Mongo addfields返回集合没有值
$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
我想把值提高到顶级文档的水平,因为我有抱怨点引用字段的数学函数的麻烦。
在上面的文档中,我想d = sqr((x1-x2)2+(y1-y2)2+(z1-z2)2)。
我试图在查询时要做到这一点,而不是重新处理整个集合,有10万名的条目(潜在的)
的代码在PowerShell和.NET驱动的,高兴有在.js文件虽然
出认沽如下:...
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}
正如你所看到的x,y,z是收藏,而不是值
TIA
请分享一些样本输入数据和期望的输出以及一个正确的问题。你究竟想达到什么目的? – dnickless
抱歉试图简要... – RocketAndy