В приведенном ниже файле json я хочу точно отфильтровать десятичное значение в дочернем массиве текста. В то же время, извините за пример кода, на выходе будет показано все значение json вместо отфильтрованного значения.
sample json файл:
{
"_id" : ObjectId("01"),
"project_id" : "100",
"snapshot" : "Symbol",
"obs" : {
"land" : {
"b2" : {
"points" : [
"p1",
"p2"
]
}
"points" : {
"p1" : {
"position" : [
123.00000000,
123.00000000
]
},
"p2" : {
"position" : [
1235.896523,
]
}
"text" : {
"t2" : {
"box" : [
[
123.0,
3361.0
],
[
117,
60
],
0.0
],
"value" : "813"
},
"t3" : {
"box" : [
[
1260.76745605469,
726.63720703125
],
[
51.4486427307129,
88.5970306396484
],
-36.2538375854492
],
"value" : "27.06"
}
}
пример кода:
db.getCollection('obs').aggregate([{$match: {project_id: "100",snapshot : "Symbol"}},
{$addFields:{
"obs.text":{
$arrayToObject:{
$filter:{
input:{$objectToArray:"$obs.text"},
cond:{
$regexMatch:{
input:"$$this.k",
regex:/t/
}
}
}
}
}
}}
])
Excepted output:
"_id" : ObjectId("01"),
"project_id" : "100",
"snapshot" : "Symbol",
"obs" : {
"text" : {
"t3" : {
"value" : "27.06"
}
}
}